From b637d625216e50602d0bde8a544c281ca00af5fa Mon Sep 17 00:00:00 2001 From: Debulois Date: Thu, 31 Mar 2022 14:56:45 +0200 Subject: Grosse maj encore avec ajout de fonctionnalités dans l'admin principalement et grosse remise en page / rennomage et preparation pour retravailler le CSS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Functions/func_admin.php | 81 +++++++++++++++++++++++++++++++++++++++ Core/Functions/func_info.php | 41 ++++++++++++++++++++ Core/Functions/func_language.php | 22 +++++++++++ Core/Functions/func_login.php | 78 +++++++++++++++++++++++++++++++++++++ Core/Functions/func_logout.php | 40 +++++++++++++++++++ Core/Functions/func_mission.php | 54 ++++++++++++++++++++++++++ Core/Functions/func_myMission.php | 58 ++++++++++++++++++++++++++++ Core/Functions/func_register.php | 30 +++++++++++++++ Core/Functions/func_sanitize.php | 17 ++++++++ Core/Functions/func_search.php | 81 +++++++++++++++++++++++++++++++++++++++ 10 files changed, 502 insertions(+) create mode 100644 Core/Functions/func_admin.php create mode 100644 Core/Functions/func_info.php create mode 100644 Core/Functions/func_language.php create mode 100644 Core/Functions/func_login.php create mode 100644 Core/Functions/func_logout.php create mode 100644 Core/Functions/func_mission.php create mode 100644 Core/Functions/func_myMission.php create mode 100644 Core/Functions/func_register.php create mode 100644 Core/Functions/func_sanitize.php create mode 100644 Core/Functions/func_search.php (limited to 'Core/Functions') diff --git a/Core/Functions/func_admin.php b/Core/Functions/func_admin.php new file mode 100644 index 0000000..16cf7c0 --- /dev/null +++ b/Core/Functions/func_admin.php @@ -0,0 +1,81 @@ +del_user_by_userid($userId); + + // Sélection du message à affiché en fonction de réussite ou pas. + if ($deleted) { + $message = ["adminDelUser", "success"]; + } else { + $message = ["adminDelUser", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function admin_job_add($jobNameEn, $jobNameFr) { + $dbadmin = new DbAdmin; + // https://www.w3schools.com/php/func_string_strtolower.asp + $added = $dbadmin->register_job_category( + ucwords(strtolower($jobNameEn)), + ucwords(strtolower($jobNameFr)) + ); + + // Sélection du message à affiché en fonction de réussite ou pas. + if ($added) { + $message = ["adminAddJob", "success"]; + } else { + $message = ["adminAddJob", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function admin_job_del($jobId) { + $dbadmin = new DbAdmin; + $deleted = $dbadmin->del_job_category_by_jobid($jobId); + + // Sélection du message à affiché en fonction de réussite ou pas. + if ($deleted) { + $message = ["adminDelJob", "success"]; + } else { + $message = ["adminDelJob", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function admin_mission_del($missionId) { + $dbadmin = new DbAdmin; + $deleted = $dbadmin->del_mission_by_missionid($missionId); + + // Sélection du message à affiché en fonction de réussite ou pas. + if ($deleted) { + $message = ["adminDelMission", "success"]; + } else { + $message = ["adminDelMission", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_info.php b/Core/Functions/func_info.php new file mode 100644 index 0000000..8464fe1 --- /dev/null +++ b/Core/Functions/func_info.php @@ -0,0 +1,41 @@ +get_pro_job_by_proid($userId); + $userJobsId = []; + for ($i = 0; $i < count($userJobs); $i++) { + array_push($userJobsId, $userJobs[$i]["jobCategoryId"]); + } + $dbuser->update_user_infos($userInfos, $userId, $isPro, $userJobsId); + } else { + $dbuser->update_user_infos($userInfos, $userId, $isPro); + } + + // Redirection vers message avec l'index du message à afficher. + $message = ["infosUpdate", "success"]; + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_language.php b/Core/Functions/func_language.php new file mode 100644 index 0000000..a1c1498 --- /dev/null +++ b/Core/Functions/func_language.php @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/Core/Functions/func_login.php b/Core/Functions/func_login.php new file mode 100644 index 0000000..6456ba1 --- /dev/null +++ b/Core/Functions/func_login.php @@ -0,0 +1,78 @@ +check_user_credential($email, $pass); + // ou par cookie. + } else { + // On essaie une fois. + $userId = $dbuser->check_token_autologin($cookie[0], $cookie[1]); + // Et on le supprime. + $dbuser->del_token_autologin($cookie[0]); + } + + // Si on a un résultat valide. + if ($userId) { + $dbsearch = new DbSearch; + // LoggedIn devien "true". + $_SESSION["loggedIn"] = "1"; + // et on remplie les variables de la session avec les infos de l'utilisateur. + $userInfo = $dbsearch->get_user_account_by_userid($userId); + foreach ($userInfo as $key => $value) { + $_SESSION[$key] = $value; + } + + // Si était coché remember me ou que la connection s'est faite via cookie, + // on en génère un nouveau. + if ($remember || $cookie) { + $name = "autoLogin"; + // On génère une chaine de caractère aléatoire en supprimant les caractères spéciaux de base64. + $token = str_replace(["+", "/", "="], "", base64_encode(random_bytes(32))); + // On update le nouveau token. + $dbuser->update_token_autologin($_SESSION["email"], $token); + // Enfin on place l'ensemble sur le navigateur du client codé en base64. + setcookie($name, + base64_encode(json_encode(array($_SESSION["email"], $token))), + time() + (86400 * 7), + "/" + ); + } + + // On sélectionne le bon message en fonction du type de connection. + if (!$cookie) { + $message = ["login", "success"]; + } else { + $message = ["loginCookie", "success"]; + } + } else { + // Si la connection a échoué. + if (!$cookie) { + $message = ["login", "fail"]; + // Si la connection à échoué par cookie. + } else { + // Suppression du cookie. + unset($_COOKIE["autoLogin"]); + setcookie("autoLogin", "", time() - 3600, "/"); + $message = ["loginCookie", "fail"]; + } + } + + // On redirige vers message. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_logout.php b/Core/Functions/func_logout.php new file mode 100644 index 0000000..dd6a411 --- /dev/null +++ b/Core/Functions/func_logout.php @@ -0,0 +1,40 @@ +del_token_autologin($_SESSION["email"]); + // Et le cookie + if (isset($_COOKIE["autoLogin"])) { + unset($_COOKIE["autoLogin"]); + setcookie("autoLogin", "", time() - 3600, "/"); + } + + // Et on en redémarre une nouvelle. + session_start(); + $_SESSION["loggedIn"] = "0"; + $_SESSION["lang"] = $lang; + + // Enfin on redirige avec le bon message. + $message = ["logout", "success"]; + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_mission.php b/Core/Functions/func_mission.php new file mode 100644 index 0000000..9d009c5 --- /dev/null +++ b/Core/Functions/func_mission.php @@ -0,0 +1,54 @@ + $proId, + "proJobs" => $dbsearch->get_pro_job_by_proid($proId) + ]; + header("Location: /Templates/mission.php"); + die(); +} + +function mission_register($subject, $clientId, $proId, $jobId) { + $dbmission = new DbMission; + $registered = $dbmission->register_mission($subject, $clientId, $proId, $jobId); + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($registered) { + $message = ["missionRegister", "success"]; + } else { + $message = ["missionRegister", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function mission_review($missionId, $review, $note) { + $dbmission = new DbMission; + $reviewed = $dbmission->review_mission($missionId, $review, $note); + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($reviewed) { + $message = ["missionReview", "success"]; + } else { + $message = ["missionReview", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_myMission.php b/Core/Functions/func_myMission.php new file mode 100644 index 0000000..3531c48 --- /dev/null +++ b/Core/Functions/func_myMission.php @@ -0,0 +1,58 @@ +accept_mission_by_missionid($missionId); + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($accepted) { + $message = ["missionAccepted", "success"]; + } else { + $message = ["missionAccepted", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function mymission_complete_mission($missionId, $userStatus) { + $dbmission = new DbMission; + + switch ($userStatus) { + // Pro + case 1: + $validated = $dbmission->validate_mission_pro_by_missionid($missionId); + break; + // Client + case 2: + $validated = $dbmission->validate_mission_client_by_missionid($missionId); + $_SESSION["missionCompleted"] = [ + "missionId" => $missionId + ]; + header("Location: /Templates/mission.php"); + die(); + default: + break; + } + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($validated) { + $message = ["missionValidated", "success"]; + } else { + $message = ["missionValidated", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_register.php b/Core/Functions/func_register.php new file mode 100644 index 0000000..b7c02cd --- /dev/null +++ b/Core/Functions/func_register.php @@ -0,0 +1,30 @@ +register_user($email, + $password, + $userStatus + ); + + // Sélection du message à afficher en fonction de la réussite de l'inscription. + if ($registered) { + $message = ["userAdd", "success"]; + } else { + $message = ["userAdd", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?> \ No newline at end of file diff --git a/Core/Functions/func_sanitize.php b/Core/Functions/func_sanitize.php new file mode 100644 index 0000000..afee91c --- /dev/null +++ b/Core/Functions/func_sanitize.php @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/Core/Functions/func_search.php b/Core/Functions/func_search.php new file mode 100644 index 0000000..69740da --- /dev/null +++ b/Core/Functions/func_search.php @@ -0,0 +1,81 @@ +get_pro_info_by_lastname($request); + break; + case 2: + $result = $dbsearch->get_all_pro_by_jobid($request); + break; + default: + break; + } + + // Pour chaque utilisateur avec un nom qui "match". + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobs"] = $dbsearch->get_pro_job_by_proid($result[$i]["userId"]); + // récupération du nombre de mission effectué. + $numberMission = $dbmission->count_pro_missions_by_proid($result[$i]["userId"]); + $result[$i]["numberOfMissions"] = $numberMission[0][0]; + // récupération des notes de l'utilisateur. + $allNotes = $dbsearch->get_pro_note_by_proid($result[$i]["userId"]); + // Pour chaque note on la "push" (ajoute) dans une liste. + $notes = array(); + for ($j = 0; $j < count($allNotes); $j++) { + if ($allNotes[$j][0]) { + array_push($notes, $allNotes[$j][0]); + } + } + + // On fait la moyenne des notes, + // et pour les étoiles on "coupe" tout ce qui est après la virgule en castant en "int". + if ($notes) { + $average = array_sum($notes) / count($notes); + $result[$i]["note"] = round($average, 2); + $result[$i]["star"] = (int)$average; + // Si il n'y a pas encore de note. + } else { + $result[$i]["note"] = 0; + $result[$i]["star"] = 0; + } + } + // Si c'est "plus d'info" et non une recherche. + } else { + $result = $dbsearch->get_user_info_by_userid($request); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobs"] = $dbsearch->get_pro_job_by_proid($request); + } + } + + // Redirection vers l'index avec le "payload" (contenu) en fonction du type de recherche. + if ($isResearch) { + $search = array( + "result" => $result, + "isResearch" => true + ); + } else { + $search = array( + "result" => $result, + "isResearch" => false + ); + } + $_SESSION["search"] = $search; + + header("Location: /index.php#separator2"); + die(); +} + +?> \ No newline at end of file -- cgit v1.2.3