diff options
| author | Debulois <quentin@debulois.fr> | 2022-03-31 14:56:45 +0200 |
|---|---|---|
| committer | Debulois <quentin@debulois.fr> | 2022-03-31 14:56:45 +0200 |
| commit | b637d625216e50602d0bde8a544c281ca00af5fa (patch) | |
| tree | 5e44ad1048f8a3583cc854fe3bc21086ede4d88a | |
| parent | c9d4c87b21f1050a780f5296961d24bd17c9cdc8 (diff) | |
Grosse maj encore avec ajout de fonctionnalités dans l'admin principalement et grosse remise en page / rennomage et preparation pour retravailler le CSS
82 files changed, 2492 insertions, 1614 deletions
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 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonctions d'administration du site # +// # # +// ############################################################################ + +function admin_user_del ($userId) { + $dbadmin = new DbAdmin; + $deleted = $dbadmin->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 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction de modifications des informations de l'utilisateur # +// # par ID # +// # # +// ############################################################################ + +function info_update_user_infos($userInfos, $userId, $userStatus) { + $dbuser = new DbUser; + $dbsearch = new DbSearch; + + switch ($userStatus) { + case 1: + $isPro = true; + break; + default: + $isPro = false; + break; + } + + if ($isPro) { + $userJobs = $dbsearch->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 @@ +<?php + +// ############################################################################ +// # # +// # Description: Modification de la variable lang de la session # +// # qui sert à définir quel dossier de language importer # +// # # +// ############################################################################ + +function language_set($language) { + $_SESSION["lang"] = $language; + + // Redirection vers la page actuelle avec la langue à affiche. + if ($_SESSION["src"] == "index") { + header("Location: /".$_SESSION["src"].".php"); + } else { + header("Location: /Templates/".$_SESSION["src"].".php"); + } + die(); +} + +?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_login.php b/Core/Functions/func_login.php index 165c2cd..6456ba1 100644 --- a/Wrapper/Functions/func_login.php +++ b/Core/Functions/func_login.php @@ -1,32 +1,39 @@ <?php -// **************************************************************************** -// Description: Fonction de connection, par combinaison de mail & mdp -// ou par un cookie dans lequel est stocké l'email et une chaine -// de caractère aléatoire valable pour une seule tentative. -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Fonction de connection, par combinaison de mail & mdp ou # +// # par un cookie dans lequel est stocké l'email et une chaine # +// # de caractère aléatoire valable pour une seule tentative. # +// # # +// ############################################################################ + function login($cookie, $email = null, $pass = null, $remember = 0) { // Instanciation de la gestion de la BDD utilisateur. $dbuser = new DbUser; + // On vérifie si la connection se fait via le formulaire de connection ou par cookie if (!$cookie) { - $userId = $dbuser->user_check_credential($email, $pass); + $userId = $dbuser->check_user_credential($email, $pass); // ou par cookie. } else { // On essaie une fois. - $userId = $dbuser->autologin_token_check($cookie[0], $cookie[1]); + $userId = $dbuser->check_token_autologin($cookie[0], $cookie[1]); // Et on le supprime. - $dbuser->autologin_token_delete($cookie[0]); + $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_id($userId); + $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) { @@ -34,7 +41,7 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { // 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->autologin_token_update($_SESSION["email"], $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))), @@ -42,6 +49,7 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { "/" ); } + // On sélectionne le bon message en fonction du type de connection. if (!$cookie) { $message = ["login", "success"]; @@ -60,9 +68,11 @@ function login($cookie, $email = null, $pass = null, $remember = 0) { $message = ["loginCookie", "fail"]; } } + // On redirige vers message. $_SESSION["message"] = $message; - header("Location: /Views/message.php"); + header("Location: /Templates/message.php"); die(); } + ?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_logout.php b/Core/Functions/func_logout.php index 975f90b..dd6a411 100644 --- a/Wrapper/Functions/func_logout.php +++ b/Core/Functions/func_logout.php @@ -1,30 +1,40 @@ <?php -// **************************************************************************** -// Decription: Fonction pour se déconnecter -// **************************************************************************** + +// ############################################################################ +// # # +// # Decription: Fonction pour se déconnecter # +// # # +// ############################################################################ + function logout() { + // On instancie les méthodes de gestion de la BDD. + $dbuser = new DbUser; + + // On récupère la session session_start(); // On conserve la langue qui était sélectionnée. $lang = $_SESSION["lang"]; - // On instancie les méthodes de gestion de la BDD. - $dbuser = new DbUser; + // On détruit la session. + session_destroy(); + // On supprime le token d'auto-connection dans la BDD. - $dbuser->autologin_token_delete($_SESSION["email"]); + $dbuser->del_token_autologin($_SESSION["email"]); // Et le cookie if (isset($_COOKIE["autoLogin"])) { unset($_COOKIE["autoLogin"]); setcookie("autoLogin", "", time() - 3600, "/"); } - // On détruit la session. - session_destroy(); + // 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: /Views/message.php"); + header("Location: /Templates/message.php"); die(); } + ?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_mission.php b/Core/Functions/func_mission.php index 4162e73..9d009c5 100644 --- a/Wrapper/Functions/func_mission.php +++ b/Core/Functions/func_mission.php @@ -1,44 +1,54 @@ <?php -// **************************************************************************** -// Description: Fonction d'enregistrement d'une mission -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Fonction d'enregistrement d'une mission # +// # # +// ############################################################################ + function mission_initiate($proId) { $dbsearch = new DbSearch; + $_SESSION["missionInitiate"] = [ "proId" => $proId, - "proJobs" => $dbsearch->get_pro_job_category($proId) + "proJobs" => $dbsearch->get_pro_job_by_proid($proId) ]; - header("Location: /Views/mission.php"); + 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: /Views/message.php"); + 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: /Views/message.php"); + header("Location: /Templates/message.php"); die(); } + ?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_myMission.php b/Core/Functions/func_myMission.php index c461e5a..3531c48 100644 --- a/Wrapper/Functions/func_myMission.php +++ b/Core/Functions/func_myMission.php @@ -1,47 +1,58 @@ <?php -// **************************************************************************** -// Description: Fonction de gesrtion de ses missions -// **************************************************************************** -function accept_mission($missionId) { + +// ############################################################################ +// # # +// # Description: Fonction de gesrtion de ses missions # +// # # +// ############################################################################ +function mymission_accept_mission($missionId) { $dbmission = new DbMission; - $accepted = $dbmission->accept_mission($missionId); + $accepted = $dbmission->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: /Views/message.php"); + header("Location: /Templates/message.php"); die(); } -function validate_mission($missionId, $userStatus) { +function mymission_complete_mission($missionId, $userStatus) { $dbmission = new DbMission; + switch ($userStatus) { + // Pro case 1: - $validated = $dbmission->validate_mission_by_pro($missionId); + $validated = $dbmission->validate_mission_pro_by_missionid($missionId); break; + // Client case 2: - $validated = $dbmission->validate_mission_by_client($missionId); + $validated = $dbmission->validate_mission_client_by_missionid($missionId); $_SESSION["missionCompleted"] = [ "missionId" => $missionId ]; - header("Location: /Views/mission.php"); + 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: /Views/message.php"); + 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 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction d'inscription d'un nouvel utilisateur # +// # # +// ############################################################################ + +function register($email, $password, $userStatus) { + $dbuser = new DbUser; + + $registered = $dbuser->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 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction simple pour nettoyer un peu la data # +// # # +// ############################################################################ + +function sanitize($data) { + // Retrait des espaces en début et fin de la variable. + $trimmed = trim($data); + // Retrait des charactères HTML (XSS). + $htmlChars = htmlspecialchars($trimmed); + return $htmlChars; +} + +?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_search.php b/Core/Functions/func_search.php index 6736a06..69740da 100644 --- a/Wrapper/Functions/func_search.php +++ b/Core/Functions/func_search.php @@ -1,22 +1,37 @@ <?php -// **************************************************************************** -// Description: Fonction pour rechercher les consultants -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Fonction pour rechercher les consultants # +// # # +// ############################################################################ + function search($request, $isResearch) { // Instanciation des méthodes de recherches de la BDD. - $dbsearch = new DbSearch; + $dbsearch = new DbSearch; $dbmission = new DbMission; + // Si c'est une recherche. if ($isResearch) { - $result = $dbsearch->get_pro_info_by_lastname($request); + switch ($isResearch) { + case 1: + $result = $dbsearch->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_category($result[$i]["userId"]); + $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_id($result[$i]["userId"]); + $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_id($result[$i]["userId"]); + $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++) { @@ -24,6 +39,7 @@ function search($request, $isResearch) { 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) { @@ -38,11 +54,12 @@ function search($request, $isResearch) { } // Si c'est "plus d'info" et non une recherche. } else { - $result = $dbsearch->get_user_info_by_id($request); + $result = $dbsearch->get_user_info_by_userid($request); for ($i = 0; $i < count($result); $i++) { - $result[$i]["jobs"] = $dbsearch->get_pro_job_category($request); + $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( @@ -56,7 +73,9 @@ function search($request, $isResearch) { ); } $_SESSION["search"] = $search; + header("Location: /index.php#separator2"); die(); } + ?>
\ No newline at end of file diff --git a/Wrapper/wrapper.php b/Core/wrapper.php index 2645896..89e7b96 100644 --- a/Wrapper/wrapper.php +++ b/Core/wrapper.php @@ -1,27 +1,31 @@ <?php -// ################################################################################ -// # Description: Le wrapper est le fichier qui fait le joint avec les # -// # fonctions PHP .Son role est de filtrer les données recus et de # -// # déclencher la bonne fonction. Selon la page qui l'appelle, j'ai # -// # voulu créer ce système car c'est une solution que j'ai imaginé # -// # pour rediréger tout mes formulaires vers une page unique. # -// ################################################################################ -// Import de toutes les fonctions et des méthodes pour gérer la BDD. -require_once(dirname( __FILE__ )."/../Database/meth_dbuser.php"); -require_once(dirname( __FILE__ )."/../Database/meth_dbadmin.php"); -require_once(dirname( __FILE__ )."/../Database/meth_dbsearch.php"); -require_once(dirname( __FILE__ )."/../Database/meth_dbmission.php"); -require_once(dirname( __FILE__ )."/Functions/func_info.php"); -require_once(dirname( __FILE__ )."/Functions/func_admin.php"); -require_once(dirname( __FILE__ )."/Functions/func_login.php"); -require_once(dirname( __FILE__ )."/Functions/func_logout.php"); -require_once(dirname( __FILE__ )."/Functions/func_search.php"); -require_once(dirname( __FILE__ )."/Functions/func_mission.php"); -require_once(dirname( __FILE__ )."/Functions/func_register.php"); -require_once(dirname( __FILE__ )."/Functions/func_language.php"); -require_once(dirname( __FILE__ )."/Functions/func_sanitize.php"); -require_once(dirname( __FILE__ )."/Functions/func_myMission.php"); +// ############################################################################# +// # # +// # Description: Le wrapper est le fichier qui fait le joint avec les # +// # fonctions PHP .Son role est de filtrer les données recus # +// # et de déclencher la bonne fonction. Selon la page qui # +// # l'appelle, j'ai voulu créer ce système car c'est une # +// # solution que j'ai imaginé pour rediréger tout mes # +// # formulaires vers une page unique. # +// # # +// ############################################################################# + +// Import de toutes les fonctions et des méthodes pour gérer la BDD. +require_once(dirname( __FILE__ )."./../Database/meth_dbuser.php"); +require_once(dirname( __FILE__ )."./../Database/meth_dbadmin.php"); +require_once(dirname( __FILE__ )."./../Database/meth_dbsearch.php"); +require_once(dirname( __FILE__ )."./../Database/meth_dbmission.php"); +require_once(dirname( __FILE__ )."./Functions/func_info.php"); +require_once(dirname( __FILE__ )."./Functions/func_admin.php"); +require_once(dirname( __FILE__ )."./Functions/func_login.php"); +require_once(dirname( __FILE__ )."./Functions/func_logout.php"); +require_once(dirname( __FILE__ )."./Functions/func_search.php"); +require_once(dirname( __FILE__ )."./Functions/func_mission.php"); +require_once(dirname( __FILE__ )."./Functions/func_register.php"); +require_once(dirname( __FILE__ )."./Functions/func_language.php"); +require_once(dirname( __FILE__ )."./Functions/func_sanitize.php"); +require_once(dirname( __FILE__ )."./Functions/func_myMission.php"); session_start(); // Si la session existe et que la variable src est bien présente. @@ -50,7 +54,7 @@ if (isset($_SESSION["src"])) { && ($_POST["langSel"] == "en" || $_POST["langSel"] == "fr") ) { - set_language($_POST["langSel"]); + language_set($_POST["langSel"]); // **************************************************************************** @@ -58,16 +62,20 @@ if (isset($_SESSION["src"])) { // **************************************************************************** // Condition pour une recherche } elseif ($_SESSION["src"] == "index" - && (isset($_POST["search"]) && $_POST["search"] !== "") - || (isset($_POST["moreInfoProId"]) && $_POST["moreInfoProId"] !== "") + && (isset($_POST["moreInfoProId"]) && $_POST["moreInfoProId"] !== "") + || (isset($_POST["searchByName"]) && $_POST["searchbyName"] !== "") + || (isset($_POST["searchByJob"]) && $_POST["searchbyJob"] !== "") ) { - if ($_POST["search"]) { - search($_POST["search"], 1); - - } elseif ($_POST["moreInfoProId"]) { + if ($_POST["moreInfoProId"]) { search($_POST["moreInfoProId"], 0); + } elseif ($_POST["searchByName"]) { + search($_POST["searchByName"], 1); + + } elseif ($_POST["searchByJob"]) { + search($_POST["searchByJob"], 2); + } else { http_response_code(404); die(); @@ -93,7 +101,7 @@ if (isset($_SESSION["src"])) { // **************************************************************************** -// CONNECTION +// CONNECTION SANS ET AVEC COOKIE // **************************************************************************** } elseif ($_SESSION["src"] == "login" && isset($_POST["email"], $_POST["password"]) @@ -107,10 +115,6 @@ if (isset($_SESSION["src"])) { } login(0, $_POST["email"], $_POST["password"], $_POST["rememberMe"]); - -// **************************************************************************** -// CONNECTION AVEC COOKIE -// **************************************************************************** } elseif ($_SESSION["src"] == "autoLogin" && isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] @@ -157,11 +161,11 @@ if (isset($_SESSION["src"])) { && $_POST["description"] !== "" ) ) { - modify_user_info($_POST, $_SESSION["userId"], $_SESSION["userStatus"]); + info_update_user_infos($_POST, $_SESSION["userId"], $_SESSION["userStatus"]); // **************************************************************************** -// MISSION - MANDATER +// MISSION - MANDATER, ENREGISTRER UNE REQUETE, VALIDER ET AVIS // **************************************************************************** // mandater une mission } elseif ($_SESSION["src"] == "index" @@ -169,9 +173,6 @@ if (isset($_SESSION["src"])) { ) { mission_initiate($_POST["mandateProId"]); -// **************************************************************************** -// MISSION - ENREGISTRER UNE REQUETE -// **************************************************************************** } elseif ($_SESSION["src"] == "mission" && isset($_SESSION["loggedIn"], $_SESSION["userStatus"], $_POST["missionSubject"], $_POST["missionJob"], @@ -189,10 +190,6 @@ if (isset($_SESSION["src"])) { $_POST["missionJob"] ); - -// **************************************************************************** -// MISSION - VALIDER ET REVIEW -// **************************************************************************** } elseif ($_SESSION["src"] == "mission" && isset($_SESSION["loggedIn"], $_SESSION["userStatus"], $_POST["missionCompletedId"], $_POST["review"], @@ -225,7 +222,7 @@ if (isset($_SESSION["src"])) { if (isset($_POST["acceptedMissionId"]) && $_POST["acceptedMissionId"] !== "" ) { - accept_mission($_POST["acceptedMissionId"]); + mymission_accept_mission($_POST["acceptedMissionId"]); } elseif (isset($_POST["validatedMissionId"], $_SESSION["userStatus"]) && $_POST["validatedMissionId"] !== "" @@ -233,7 +230,7 @@ if (isset($_SESSION["src"])) { ||$_SESSION["userStatus"] == 2 ) ) { - validate_mission($_POST["validatedMissionId"], $_SESSION["userStatus"]); + mymission_complete_mission($_POST["validatedMissionId"], $_SESSION["userStatus"]); } else { http_response_code(404); @@ -247,37 +244,44 @@ if (isset($_SESSION["src"])) { // Condition pour l'administration du site } elseif ($_SESSION["src"] == "admin" && isset($_SESSION["loggedIn"], - $_SESSION["userStatus"], + $_SESSION["userStatus"] ) && $_SESSION["loggedIn"] && $_SESSION["userStatus"] == 0 - && (isset($_POST["userId"]) - || isset($_POST["addCategoryNameEn"], - $_POST["addCategoryNameFr"] + && (isset($_POST["delUserId"]) + || isset($_POST["addJobNameEn"], + $_POST["addJobNameFr"] ) - || isset($_POST["delCategoryId"]) + || isset($_POST["delJobId"]) + || isset($_POST["delMissionId"]) ) ) { // Suppression d'un utilisateur - if (isset($_POST["userId"]) - && $_POST["userId"] !== "" + if (isset($_POST["delUserId"]) + && $_POST["delUserId"] !== "" ) { - delete($_POST["userId"]); + admin_user_del($_POST["delUserId"]); // Ajout d'un catégorie d'emploi - } elseif (isset($_POST["addCategoryNameEn"]) - && isset($_POST["addCategoryNameFr"]) - && $_POST["addCategoryNameEn"] !== "" - && $_POST["addCategoryNameFr"] !== "" + } elseif (isset($_POST["addJobNameEn"]) + && isset($_POST["addJobNameFr"]) + && $_POST["addJobNameEn"] !== "" + && $_POST["addJobNameFr"] !== "" ) { - job_category_add($_POST["addCategoryNameEn"], $_POST["addCategoryNameFr"]); + admin_job_add($_POST["addJobNameEn"], $_POST["addJobNameFr"]); // Suppression d'une categorie d'emploi - } elseif (isset($_POST["delCategoryId"]) - && $_POST["delCategoryId"] !== "" + } elseif (isset($_POST["delJobId"]) + && $_POST["delJobId"] !== "" + ) { + admin_job_del($_POST["delJobId"]); + + // Suppression d'une mission + } elseif (isset($_POST["delMissionId"]) + && $_POST["delMissionId"] !== "" ) { - job_category_del($_POST["delCategoryId"]); + admin_mission_del($_POST["delMissionId"]); // sinon } else { diff --git a/Database/dbmain.php b/Database/dbmain.php index 1f1ac24..77999f9 100644 --- a/Database/dbmain.php +++ b/Database/dbmain.php @@ -1,20 +1,27 @@ <?php -// **************************************************************************** -// Description: Partie commune des deux ensembles de méthodes -// pour la gestion de la BDD -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Partie commune des deux ensembles de méthodes # +// # pour la gestion de la BDD # +// # # +// ############################################################################ + // Utilisation de PDO: // https://www.php.net/manual/fr/pdo.connections.php -// // private: accessible uniquement dans la class // protected: accesible depuis l'extérieur et donc via extend mais non modifiable // public: accessible et modifiable depuis l'extérieur // final: ne peut etre ré-écris (overload) class DbMain { + + // **************************************************************************** + // INFOS GLOBAL ET DE CONNEXION + // **************************************************************************** // Pour gérer si "en production" private $debug = True; - // Salt pour chiffrement + // Salt pour le chiffrement private $salt = "cTKXHBoN3oxymlhNem2h"; // Configuration du serveur MYSQL / MARIADB private $conn; @@ -23,8 +30,9 @@ class DbMain { private $pass = ""; private $database = "alphajob"; - // Déclaration des tables - // Timestamp auto si non renseigné + // **************************************************************************** + // DECLARATION DES TABLES + // **************************************************************************** // UserAccount, infos du compte nécessaire à la connection private $createTableUserAccount = "CREATE TABLE IF NOT EXISTS `alphajob`.`userAccount` ( `userId` INT UNSIGNED NOT NULL AUTO_INCREMENT, @@ -134,6 +142,9 @@ class DbMain { protected $tableUserJob = "userJob"; protected $tableMission = "mission"; + // **************************************************************************** + // FONCTIONS PRINCIPALES + // **************************************************************************** // Création de la DB si elle n'existe pas private function create_db() { $reqInitDb = "CREATE DATABASE IF NOT EXISTS ".$this->database; @@ -210,7 +221,7 @@ class DbMain { return $data[0][0]; } - // Fonction "auto", déclenchée à l'instanciation + // Constructeur, fonction "auto" déclenchée à l'instanciation final public function __construct() { // Essaie de se connecter a la BDD if ($this->debug) { @@ -220,4 +231,5 @@ class DbMain { } } } + ?>
\ No newline at end of file diff --git a/Database/meth_dbadmin.php b/Database/meth_dbadmin.php index 112bce1..b41c7c5 100644 --- a/Database/meth_dbadmin.php +++ b/Database/meth_dbadmin.php @@ -1,14 +1,21 @@ <?php -// **************************************************************************** -// Description: Ensemble de méthodes pour étendre dbmain -// afin de gérer l'administration du site -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Ensemble de méthodes pour étendre dbmain # +// # afin de gérer l'administration du site # +// # # +// ############################################################################ // Import de dbmain -require_once(dirname( __FILE__ )."/dbmain.php"); +require_once(dirname( __FILE__ )."./dbmain.php"); + // Extension de cette classe avec dbmain class DbAdmin extends DbMain { + // **************************************************************************** + // GESTION DES UTILISATEURS DANS L'ADMIN + // **************************************************************************** // Récupérer toutes les infos de la table userAccount final public function get_all_users_account() { $reqGetAll = " @@ -25,7 +32,7 @@ class DbAdmin extends DbMain { // https://stackoverflow.com/questions/1361340/how-can-i-do-insert-if-not-exists-in-mysql // Suppresion d'un utilisateur - final public function user_del($userId) { + final public function del_user_by_userid($userId) { // Préparation de la requète pour voir si l'utilisateur existe // https://stackoverflow.com/questions/1676551/best-way-to-test-if-a-row-exists-in-a-mysql-table $reqCheckExistId = " @@ -56,8 +63,11 @@ class DbAdmin extends DbMain { } } + // **************************************************************************** + // GESTION DES EMPLOIS DANS L'ADMIN + // **************************************************************************** // Ajout d'une categorie - final public function job_category_register($jobCategoryNameEn, $jobCategoryNameFr) { + final public function register_job_category($jobNameEn, $jobNameFr) { // Préparation et execution de la requète pour voir si la categorie existe en anglais $reqCheckjobCategoryNameEn = " SELECT EXISTS( @@ -67,7 +77,7 @@ class DbAdmin extends DbMain { jobCategoryNameEn = ? LIMIT 1 )"; - $reqResultEn = $this->exec_cmd($reqCheckjobCategoryNameEn, array($jobCategoryNameEn))->fetchAll(PDO::FETCH_NUM); + $reqResultEn = $this->exec_cmd($reqCheckjobCategoryNameEn, array($jobNameEn))->fetchAll(PDO::FETCH_NUM); // Si il n'existe pas en anglais if (!$reqResultEn[0][0]) { // Préparation et execution de la requète pour voir si la categorie existe en Français @@ -79,7 +89,7 @@ class DbAdmin extends DbMain { jobCategoryNameFr = ? LIMIT 1 )"; - $reqResultFr = $this->exec_cmd($reqCheckjobCategoryNameFr, array($jobCategoryNameFr))->fetchAll(PDO::FETCH_NUM); + $reqResultFr = $this->exec_cmd($reqCheckjobCategoryNameFr, array($jobNameFr))->fetchAll(PDO::FETCH_NUM); // Si il n'existe pas en Français non plus if (!$reqResultFr[0][0]) { // Préparation de la requète pour l'ajout @@ -90,7 +100,7 @@ class DbAdmin extends DbMain { VALUES (? ,?)"; // Exécution de la requète - $this->exec_cmd($reqjobCategoryNameAdd, array($jobCategoryNameEn, $jobCategoryNameFr)); + $this->exec_cmd($reqjobCategoryNameAdd, array($jobNameEn, $jobNameFr)); // Retourne 1 pour réussite return 1; } else { @@ -104,7 +114,7 @@ class DbAdmin extends DbMain { } // Suppresion d'un utilisateur - final public function job_category_del($jobCategoryId) { + final public function del_job_category_by_jobid($jobId) { // Préparation de la requète pour voir si l'utilisateur existe $reqCheckExistId = " SELECT EXISTS( @@ -117,7 +127,7 @@ class DbAdmin extends DbMain { // Exécution de la requète, fetchall pour avoir le résultat // struct par défaut req et index (fetch_both) = arr([0] => arr("req" => BOOL, [0] => BOOL)) // fetch_num pour casser l'index "req" en chiffre, dict -> list - $reqResult = $this->exec_cmd($reqCheckExistId, array($jobCategoryId))->fetchAll(PDO::FETCH_NUM); + $reqResult = $this->exec_cmd($reqCheckExistId, array($jobId))->fetchAll(PDO::FETCH_NUM); // Si il existe if ($reqResult[0][0]) { // Préparation de la requète pour suppression @@ -127,7 +137,7 @@ class DbAdmin extends DbMain { WHERE jobCategoryId = ?"; // Exécution de la requète - $this->exec_cmd($reqDelJobCategory, array($jobCategoryId)); + $this->exec_cmd($reqDelJobCategory, array($jobId)); // Retourne 1 pour réussite return 1; } else { @@ -135,5 +145,41 @@ class DbAdmin extends DbMain { return 0; } } + + // **************************************************************************** + // GESTION DES MISSIONS DANS L'ADMIN + // **************************************************************************** + // Suppresion d'une mission + final public function del_mission_by_missionid($missionId) { + // Préparation de la requète pour voir si l'utilisateur existe + $reqCheckExistId = " + SELECT EXISTS( + SELECT 1 FROM + ".$this->tableMission." + WHERE + missionId = ? + LIMIT 1 + )"; + // Exécution de la requète + $reqResult = $this->exec_cmd($reqCheckExistId, array($missionId))->fetchAll(PDO::FETCH_NUM); + // Si il existe + if ($reqResult[0][0]) { + // Préparation de la requète pour suppression + $reqDelMission = " + DELETE FROM + ".$this->tableMission." + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqDelMission, array($missionId)); + // Retourne 1 pour réussite + return 1; + } else { + // Retourne 0 pour échec + return 0; + } + } + } + ?>
\ No newline at end of file diff --git a/Database/meth_dbmission.php b/Database/meth_dbmission.php index 92f8690..5087bc5 100644 --- a/Database/meth_dbmission.php +++ b/Database/meth_dbmission.php @@ -1,136 +1,160 @@ <?php -// **************************************************************************** -// Description: Ensemble de méthodes pour étendre dbmain afin -// d'effectuer des recherches dans la bdd -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Ensemble de méthodes pour étendre dbmain afin # +// # d'effectuer des recherches dans la bdd # +// # # +// ############################################################################ + // Infos pour les "join": // https://www.freecodecamp.org/news/sql-joins-tutorial/ -// + // Import de dbmain -require_once(dirname( __FILE__ )."/dbmain.php"); +require_once(dirname( __FILE__ )."./dbmain.php"); + // Extension de cette classe avec dbmain class DbMission extends DbMain { - // Enregistrement d'une mission - final public function register_mission($subject, $clientId, $proId, $jobId) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = " - INSERT INTO ".$this->tableMission." - (date, subject, clientId, proId, jobCategoryId) - VALUES - (?, ?, ?, ?, ?)"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $subject, $clientId, $proId, $jobId)); - return 1; - } + // **************************************************************************** + // ENREGISTREMENT ET VALIDATION DES MISSIONS + // **************************************************************************** + // Enregistrement d'une mission + final public function register_mission($subject, $clientId, $proId, $jobId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + INSERT INTO ".$this->tableMission." + (date, subject, clientId, proId, jobCategoryId) + VALUES + (?, ?, ?, ?, ?)"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $subject, $clientId, $proId, $jobId)); + return 1; + } + + // Enregistrement d'une mission + final public function accept_mission_by_missionid($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + acceptedByPro = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } + + final public function validate_mission_pro_by_missionid($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + validatedByPro = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } - // Enregistrement d'une mission - final public function accept_mission($missionId) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = " - UPDATE - ".$this->tableMission." - SET - acceptedByPro = ? - WHERE - missionId = ?"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); - return 1; - } + final public function validate_mission_client_by_missionid($missionId) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + validatedByClient = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); + return 1; + } - final public function validate_mission_by_pro($missionId) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = " - UPDATE - ".$this->tableMission." - SET - validatedByPro = ? - WHERE - missionId = ?"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); - return 1; - } + final public function review_mission($missionId, $review, $note) { + // Préparation de la requète pour enregistrement de la mission + $reqAddMission = " + UPDATE + ".$this->tableMission." + SET + review = ?, note = ? + WHERE + missionId = ?"; + // Exécution de la requète + $this->exec_cmd($reqAddMission, array($review, $note, $missionId)); + return 1; + } - final public function validate_mission_by_client($missionId) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = " - UPDATE - ".$this->tableMission." - SET - validatedByClient = ? - WHERE - missionId = ?"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, array(date("Y-m-d H:i:s"), $missionId)); - return 1; - } + // **************************************************************************** + // RECUPERATION DES INFORMATIONS RELATIVES AUX MISSIONS + // **************************************************************************** + // Récupérations des missions d'un pro par son id + final public function get_mission_by_proid($proId) { + $reqGetMissionsProId = " + SELECT + missionId, date, subject, note, review, + acceptedByPro, validatedByClient, + validatedByPro, jobCategoryId, proId, lastname + FROM + ".$this->tableMission." + LEFT JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + proId = ?"; + $result = $this->exec_cmd($reqGetMissionsProId, array($proId))->fetchAll(PDO::FETCH_ASSOC); + return $result; + } - final public function review_mission($missionId, $review, $note) { - // Préparation de la requète pour enregistrement de la mission - $reqAddMission = " - UPDATE - ".$this->tableMission." - SET - review = ?, note = ? - WHERE - missionId = ?"; - // Exécution de la requète - $this->exec_cmd($reqAddMission, array($review, $note, $missionId)); - return 1; - } + // Récupérations des missions d'un client par son id + final public function get_mission_by_clientid($clientId) { + $reqGetMissionsClientId = " + SELECT + missionId, date, subject, note, review, + acceptedByPro, validatedByClient, + validatedByPro, jobCategoryId, lastname + FROM + ".$this->tableMission." + LEFT JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + clientId = ?"; + $result = $this->exec_cmd($reqGetMissionsClientId, array($clientId))->fetchAll(PDO::FETCH_ASSOC); + return $result; + } - // Récupérations des missions d'un pro par son id - final public function get_mission_by_pro_id($proId) { - $reqGetAllMission = " - SELECT - missionId, date, subject, note, review, - acceptedByPro, validatedByClient, - validatedByPro, jobCategoryId, proId, lastname - FROM - ".$this->tableMission." - LEFT JOIN - ".$this->tableUserInfo." - ON - ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId - WHERE - proId = ?"; - $result = $this->exec_cmd($reqGetAllMission, array($proId))->fetchAll(PDO::FETCH_ASSOC); - return $result; - } + // Récupérations des missions d'un client par son id + final public function get_all_missions() { + $reqGetAllMission = " + SELECT + * + FROM + ".$this->tableMission; + $result = $this->exec_cmd($reqGetAllMission, array())->fetchAll(PDO::FETCH_NUM); + return $result; + } - // Récupérations des missions d'un client par son id - final public function get_mission_by_client_id($clientId) { - $reqGetAllMission = " - SELECT - missionId, date, subject, note, review, - acceptedByPro, validatedByClient, - validatedByPro, jobCategoryId, lastname - FROM - ".$this->tableMission." - LEFT JOIN - ".$this->tableUserInfo." - ON - ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId - WHERE - clientId = ?"; - $result = $this->exec_cmd($reqGetAllMission, array($clientId))->fetchAll(PDO::FETCH_ASSOC); - return $result; - } + // Compte le nombre de mission d'un consultant par son nom + final public function count_pro_missions_by_proid($proId) { + $reqCountMission = " + SELECT COUNT(*) FROM + ".$this->tableMission." + INNER JOIN + ".$this->tableUserInfo." + ON + ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId + WHERE + proId = ?"; + $result = $this->exec_cmd($reqCountMission, array($proId))->fetchAll(PDO::FETCH_NUM); + return $result; + } +} - // Compte le nombre de mission d'un consultant par son nom - final public function count_pro_missions_by_id($proId) { - $reqCountMission = " - SELECT COUNT(*) FROM - ".$this->tableMission." - INNER JOIN - ".$this->tableUserInfo." - ON - ".$this->tableMission.".proId = ".$this->tableUserInfo.".userId - WHERE - proId = ?"; - $result = $this->exec_cmd($reqCountMission, array($proId))->fetchAll(PDO::FETCH_NUM); - return $result; - } -}
\ No newline at end of file +?>
\ No newline at end of file diff --git a/Database/meth_dbsearch.php b/Database/meth_dbsearch.php index 7557583..eed9915 100644 --- a/Database/meth_dbsearch.php +++ b/Database/meth_dbsearch.php @@ -1,18 +1,26 @@ <?php -// **************************************************************************** -// Description: Ensemble de méthodes pour étendre dbmain afin -// d'effectuer des recherches dans la bdd -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Ensemble de méthodes pour étendre dbmain afin # +// # d'effectuer des recherches dans la bdd # +// # # +// ############################################################################ + // Infos pour les "join": // https://www.freecodecamp.org/news/sql-joins-tutorial/ // Import de dbmain -require_once(dirname( __FILE__ )."/dbmain.php"); +require_once(dirname( __FILE__ )."./dbmain.php"); + // Extension de cette classe avec dbmain class DbSearch extends DbMain { + // **************************************************************************** + // RECUPERATION DES INFORMATIONS RELATIVES AUX UTILISATEURS + // **************************************************************************** // Récupération des infos d'un compte par son id - final public function get_user_account_by_id($id) { + final public function get_user_account_by_userid($userId) { $reqSearchUser = " SELECT userId, email, inscriptionDate, userStatus @@ -20,12 +28,12 @@ class DbSearch extends DbMain { ".$this->tableUserAccount." WHERE userId = ?"; - $result = $this->exec_cmd($reqSearchUser, array($id))->fetch(PDO::FETCH_ASSOC); + $result = $this->exec_cmd($reqSearchUser, array($userId))->fetch(PDO::FETCH_ASSOC); return $result; } // Récupération des infos d'un utilisateur par son id - final public function get_user_info_by_id($id) { + final public function get_user_info_by_userid($userId) { $reqGetUserInfo = " SELECT userId, lastname, firstname, degree, @@ -35,12 +43,32 @@ class DbSearch extends DbMain { ".$this->tableUserInfo." WHERE userId = ?"; - $result = $this->exec_cmd($reqGetUserInfo, array($id))->fetchAll(PDO::FETCH_ASSOC); + $result = $this->exec_cmd($reqGetUserInfo, array($userId))->fetchAll(PDO::FETCH_ASSOC); + return $result; + } + + // **************************************************************************** + // RECUPERATION DES INFORMATIONS RELATIVES AUX PROS + // **************************************************************************** + final public function get_all_pro_by_jobid($jobId) { + $reqSearchConsultant = " + SELECT + ".$this->tableUserInfo.".userId, + lastname, firstname, capability + FROM + ".$this->tableUserInfo." + INNER JOIN + ".$this->tableUserJob." + ON + ".$this->tableUserInfo.".userId = ".$this->tableUserJob.".userId + WHERE + jobCategoryId = ?"; + $result = $this->exec_cmd($reqSearchConsultant, array($jobId))->fetchAll(PDO::FETCH_ASSOC); return $result; } // Récupération des infos d'un pro par son nom - final public function get_pro_info_by_lastname($research) { + final public function get_pro_info_by_lastname($lastname) { $reqSearchConsultant = " SELECT ".$this->tableUserInfo.".userId, @@ -55,12 +83,12 @@ class DbSearch extends DbMain { userStatus = '1' AND lastname LIKE CONCAT('%', ?, '%')"; - $result = $this->exec_cmd($reqSearchConsultant, array($research))->fetchAll(PDO::FETCH_ASSOC); + $result = $this->exec_cmd($reqSearchConsultant, array($lastname))->fetchAll(PDO::FETCH_ASSOC); return $result; } // Récupération des emploies associés à un pro - final public function get_pro_job_category($proId) { + final public function get_pro_job_by_proid($proId) { $reqGetAll = " SELECT ".$this->tableUserJob.".jobCategoryId, @@ -78,7 +106,7 @@ class DbSearch extends DbMain { } // Récupération des notes d'un consultant par son nom - final public function get_pro_note_by_id($proId) { + final public function get_pro_note_by_proid($proId) { $reqCountMission = " SELECT note @@ -94,8 +122,11 @@ class DbSearch extends DbMain { return $result; } + // **************************************************************************** + // RECUPERATION DES INFORMATIONS RELATIVES AUX EMPLOIS + // **************************************************************************** // Récupérer toutes les infos de la table jobCategory - final public function get_job_category_all() { + final public function get_job_all() { $reqGetAllJobs = " SELECT * @@ -106,7 +137,7 @@ class DbSearch extends DbMain { } // Récupérer toutes les infos de la table jobCategory - final public function get_job_category_by_id($jobId) { + final public function get_job_by_jobid($jobId) { $reqGetJobinfo = " SELECT * @@ -118,4 +149,5 @@ class DbSearch extends DbMain { return $result; } } + ?>
\ No newline at end of file diff --git a/Database/meth_dbuser.php b/Database/meth_dbuser.php index ea5c66e..4d983b5 100644 --- a/Database/meth_dbuser.php +++ b/Database/meth_dbuser.php @@ -1,19 +1,23 @@ <?php -// **************************************************************************** -// Description: Ensemble de méthodes pour étendre dbmain -// afin de gérer les utilisateurs -// **************************************************************************** -// + +// ############################################################################ +// # # +// # Description: Ensemble de méthodes pour étendre dbmain # +// # afin de gérer les utilisateurs # +// # # +// ############################################################################ + // Import de dbmain -require_once(dirname( __FILE__ )."/dbmain.php"); +require_once(dirname( __FILE__ )."./dbmain.php"); + // Extension de cette classe avec dbmain class DbUser extends DbMain { // **************************************************************************** - // Gestion d'un utilisateur + // GESTION DES UTILISATEURS // **************************************************************************** // Enregistrement d'un nouvel utilisateur - final public function user_register($email, $pass, $userStatus) { + final public function register_user($email, $pass, $userStatus) { // On vérifie si l'email existe deja dans la bdd $exist = $this->check_exist_email($email); // Si non @@ -44,7 +48,7 @@ class DbUser extends DbMain { } // Vérification de la combinaison email - pass pour authentification - final public function user_check_credential($email, $pass) { + final public function check_user_credential($email, $pass) { // Préparation de la requète pour récupérer les infos ou l'email est présent $reqCheckCredential = " SELECT @@ -66,7 +70,7 @@ class DbUser extends DbMain { } // Mise à jour des infos d'un utilisateur - final public function user_infos_update($userInfos, $userId, $isPro, $userJobs = null) { + final public function update_user_infos($userInfos, $userId, $isPro, $userJobs = null) { // Préparation de la requète pour mise à jour des infos // J'ai préféré faire deux requètes distinctes et ne pas utiliser des valeurs // passées par $POST ($key => $value) pour gérer les noms des colonnes @@ -102,7 +106,7 @@ class DbUser extends DbMain { if (!$isPro) { // Exécution de la requète // https://www.php.net/manual/fr/function.array-values.php - // Pour passer de dict a list -> array_values() + // Pour passer de "dict" a "list" -> array_values() $args = array_values($userInfos); array_push($args, $userId); $this->exec_cmd($reqAddInfoClient, $args); @@ -126,10 +130,10 @@ class DbUser extends DbMain { } // **************************************************************************** - // Gestion du token-autologin + // GESTION DU TOKEN AUTOLOGIN // **************************************************************************** // Vérification de la combinaison email - jeton d'auto-login pour authentification - final public function autologin_token_check($email, $token) { + final public function check_token_autologin($email, $token) { // Préparation de la requète pour récupérer les infos ou l'email est présent $reqCheckToken = " SELECT @@ -149,7 +153,7 @@ class DbUser extends DbMain { } // Mise à jour du jeton d'auto-login - final public function autologin_token_update($email, $token) { + final public function update_token_autologin($email, $token) { // Préparation de la requète pour mise à jour du jeton d'auto-connection $reqUpdateToken = " UPDATE @@ -163,7 +167,7 @@ class DbUser extends DbMain { } // Supression du jeton d'auto-login - final public function autologin_token_delete($email) { + final public function del_token_autologin($email) { // Préparation de la requète pour supression du jeton d'auto-connection $reqDeleteToken = " UPDATE @@ -176,4 +180,5 @@ class DbUser extends DbMain { $this->exec_cmd($reqDeleteToken, array($email))->fetchAll(PDO::FETCH_ASSOC); } } + ?>
\ No newline at end of file diff --git a/Anciennes_versions_de_l_exercice.zip b/Documents_et_infos/Anciennes_versions_avant_git.zip Binary files differindex 4f69087..4f69087 100644 --- a/Anciennes_versions_de_l_exercice.zip +++ b/Documents_et_infos/Anciennes_versions_avant_git.zip diff --git a/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg b/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg Binary files differnew file mode 100644 index 0000000..873958d --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg diff --git a/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg b/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg Binary files differdeleted file mode 100644 index d4564ad..0000000 --- a/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg +++ /dev/null diff --git a/Documents_et_infos/Structure_plan_de_site/structure_projet_web.jpg b/Documents_et_infos/Structure_plan_de_site/structure_projet_web.jpg Binary files differnew file mode 100644 index 0000000..4aea17c --- /dev/null +++ b/Documents_et_infos/Structure_plan_de_site/structure_projet_web.jpg diff --git a/todo.txt b/Documents_et_infos/todo.txt index 938a5eb..429031f 100644 --- a/todo.txt +++ b/Documents_et_infos/todo.txt @@ -10,7 +10,7 @@ - Revoir mes infos pour adapter aux clients & pros. (DONE) - Revoir front Admin - - Doit pouvoir supprimer une mission (4) + - Doit pouvoir supprimer une mission (DONE) - Doit pouvoir gérer les catégories de travail (DONE) ################################################# diff --git a/Statics/Css/main.css b/Statics/Css/main.css index 12e84e0..cd3ab65 100644 --- a/Statics/Css/main.css +++ b/Statics/Css/main.css @@ -12,8 +12,9 @@ sur mon instance SearX https://searx.debulois.fr :root { /* GLOBAL */ --mainSiteColor: #c0392b; + --bodyBg: #fafafa; /* SEPARATOR */ - --separatorBg: white; + --separatorBg: #fafafa; /* NAVBAR */ --navbarText: black; --navbarBg: white; @@ -28,7 +29,7 @@ sur mon instance SearX https://searx.debulois.fr --btnHoverBg: #e74c3c; /* TABLES */ --tableText: black; - --tableBg: #f1f1f1; + --tableBg: #fafafa; --tableBorder: rgba(0, 0, 0, 0.2); --tableStarUnchecked: darkgray; --tableStarChecked: orange; @@ -105,12 +106,18 @@ sur mon instance SearX https://searx.debulois.fr transform: scale(1.3); } -.show_slide { +.show_block { /* Opacité de l'élément 0=transparent 1=opaque */ display: block !important; } /* FIN SLIDER */ +.show_flex { + /* Opacité de l'élément 0=transparent 1=opaque */ + display: flex !important; + flex-direction: column; +} + /* MESSAGE */ .success { color: green; @@ -192,24 +199,26 @@ html { body { /* Choix du font */ - font-family: SourceSansPro !important; + font-family: SourceSansPro; margin: 0px; /* taille en vh (view height) pourcentage de hauteur de fenêtre*/ min-height: 100vh; display: flex; flex-direction: column; justify-content: space-between; + background-color: var(--bodyBg); } pre { /* Permet d'aller à la ligne */ + font-family: SourceSansPro; white-space: pre-wrap; margin: 0.3em 0em; } /* Déclaration par ID */ /* NAVBAR */ -#navbar { +nav { /* Index de profondeur */ z-index: 1; height: 10vh; @@ -218,12 +227,12 @@ pre { justify-content: space-around; text-align: center; background-color: var(--navbarBg); - border-top: var(--mainSiteColor) solid 1.5vh; - border-bottom: var(--mainSiteColor) solid 0.5vh; + border-top: var(--mainSiteColor) solid 6px; + border-bottom: var(--mainSiteColor) solid 3px; color: var(--navbarText); } -#navbar ul { +nav ul { display: flex; justify-content: space-around; column-gap: 15px; @@ -235,17 +244,17 @@ pre { padding-inline-start: 0px; } -#navbar i { +nav i { margin-right: 0.4em; } -#navbar a { +nav a { color: var(--navbarText); text-decoration: none; - transition: 0.15s; + transition: all 0.15s ease-in-out; } -#navbar a:hover { +nav a:hover { color: var(--mainSiteColor); transform: scale(1.1); z-index: 2; @@ -325,14 +334,7 @@ pre { /* FIN SLIDER */ /* GLOBAL */ -#login, -#register, -#userInfo, -#message, -#admin, -#mission, -#myMission, -#search { +main { width: 80%; min-height: 70vh; /* margin left & right en auto = centré */ @@ -342,22 +344,16 @@ pre { flex-direction: column; justify-content: center; text-align: center; - border-top: 1.5vh solid var(--mainSiteColor); - border-right: 0.5vh solid var(--mainSiteColor); - border-bottom: 0.5vh solid var(--mainSiteColor); - border-left: 0.5vh solid var(--mainSiteColor); + border-top: 6px solid var(--mainSiteColor); + border-right: 3px solid var(--mainSiteColor); + border-bottom: 3px solid var(--mainSiteColor); + border-left: 3px solid var(--mainSiteColor); + border-radius: 5px; background-color: var(--bg); color: var(--text); } -#login h2, -#register h2, -#userInfo h2, -#message h2, -#admin h2, -#search h2, -#mission h2, -#myMission h2 { +main h2 { display: inline-block; margin-left: auto; margin-right: auto; @@ -365,12 +361,16 @@ pre { border-bottom: var(--mainSiteColor) 0.5vh solid; } -#login form, -#userInfo form, -#register form, -#mission form, -#admin form, -#search form { +#mainAdmin section { + display: none; +} + +#mainLogin form, +#mainUserInfo form, +#mainRegister form, +#mainMission form, +#mainAdmin form, +#mainSearch form { display: flex; flex-direction: column; justify-content: space-around; @@ -379,38 +379,39 @@ pre { align-items: center; } -#search form, -#admin form { +#mainSearch form, +#mainAdmin form { flex-direction: row; } -#login label, -#userInfo label, -#register label, -#mission label, -#admin label, -#search label { +#mainLogin label, +#mainUserInfo label, +#mainRegister label, +#mainMission label, +#mainAdmin label, +#mainSearch label { width: 80%; display: flex; } -#login i, -#userInfo i, -#register i, -#mission i, -#admin i, -#search i { +#mainLogin i, +#mainUserInfo i, +#mainRegister i, +#mainMission i, +#mainAdmin i, +#mainSearch i { width: 90px; height: 2em; line-height: 2em; font-size: 28px; color: var(--iconColor); background-color: var(--mainSiteColor); + border-radius: 5px 0px 0px 5px; } -#myMission table, -#admin table, -#search table { +#mainMyMission table, +#mainAdmin table, +#mainSearch table { color: var(--text); padding: 5%; border-collapse: collapse; @@ -418,39 +419,104 @@ pre { margin: 1em auto; } -#myMission table { +#mainMyMission table { display: none; } -#myMission th, -#admin th, -#search th { +#mainMyMission th, +#mainAdmin th, +#mainSearch th { font-size: 15px; border: 2px solid var(--mainSiteColor); background-color: var(--tableBg); } -#myMission td, -#admin td, -#search td { +#mainMyMission td, +#mainAdmin td, +#mainSearch td { border: 2px solid var(--tableBorder); background-color: var(--tableBg); } -#userInfo input[type="text"], -#mission input[type="text"], -#login input[type="email"], -#login input[type="password"], -#register input[type="email"], -#search input[type="search"], -#register input[type="password"] { +#mainUserInfo input[type="text"], +#mainMission input[type="text"], +#mainLogin input[type="email"], +#mainLogin input[type="password"], +#mainRegister input[type="email"], +#mainSearch input[type="search"], +#mainRegister input[type="password"] { width: inherit; - border: 0.5vh solid var(--mainSiteColor); - padding: 1em; + border: 3px solid var(--mainSiteColor); + border-radius: 0px 5px 5px 0px; + padding: 0.5em; +} + +#userJob { + justify-content: space-between; +} + +#userJobs i { + border-radius: 5px; +} + +#userJob select { + height: 2.5em; + line-height: 2.5em; + margin-top: auto; + margin-bottom: auto; +} + +#userJob button[type="button"] { + margin-top: auto; + margin-bottom: auto; + margin-right: 3em; + font-size: 16px; + height: 2em; + border: 2px solid var(--mainSiteColor); + background-color: var(--bg); + border-radius: 5px; + padding: 0em 1em; + transition: all 0.1s ease-in-out; +} + +#userJob button[type="button"]:hover { + cursor: pointer; + color: var(--bg); + background-color: var(--btnHoverBg); +} + +#jobsList { + border: 3px solid var(--mainSiteColor); + border-radius: 5px; + padding: 2em 5em; + list-style: circle; +} + +#jobsList > li > button { + border: none; + background-color: inherit; +} + +#jobsList > li > button > i { + background-color: inherit; + color: var(--mainSiteColor); + border: 2px solid grey; + border-radius: 4px; + font-size: 22px; + width: 1.3em; + height: 1.3em; + line-height: 1.3em; + transition: all 0.15s ease-in-out; +} + +#jobsList > li > button > i:hover { + background-color: var(--btnHoverBg); + color: whitesmoke; + cursor: pointer; } -#mission select { +#mainMission select { height: 2.5em; line-height: 2.5em; margin-top: auto; @@ -458,46 +524,48 @@ pre { margin-left: 1em; } -#userInfo textarea, -#mission textarea { +#mainUserInfo textarea, +#mainMission textarea { width: 83%; height: 3.4em; border: 0.5vh solid var(--mainSiteColor); + border-radius: 0px 5px 5px 0px; } -#login input[type="submit"], -#userInfo input[type="submit"], -#mission input[type="submit"], -#search input[type="submit"], -#admin input[type="submit"], -#register input[type="submit"] { +#mainLogin input[type="submit"], +#mainUserInfo input[type="submit"], +#mainMission input[type="submit"], +#mainSearch input[type="submit"], +#mainAdmin input[type="submit"], +#mainRegister input[type="submit"] { font-size: 17px; font-weight: bold; height: 2.5em; border: 0.15em solid var(--mainSiteColor); background-color: var(--bg); - border-radius: 3px; + border-radius: 5px; padding: 0% 0.7em; + transition: all 0.1s ease-in-out; } -#login input[type="submit"]:hover, -#userInfo input[type="submit"]:hover, -#mission input[type="submit"]:hover, -#search input[type="submit"]:hover, -#admin input[type="submit"]:hover, -#register input[type="submit"]:hover { +#mainLogin input[type="submit"]:hover, +#mainUserInfo input[type="submit"]:hover, +#mainMission input[type="submit"]:hover, +#mainSearch input[type="submit"]:hover, +#mainAdmin input[type="submit"]:hover, +#mainRegister input[type="submit"]:hover { cursor: pointer; color: var(--bg); background-color: var(--btnHoverBg); } -#message p { +#mainMessage p { font-size: 20px; } /* FIN GLOBAL */ /* FOOTER */ -#footer { +footer { min-height: 10vh; display: flex; flex-direction: column; diff --git a/Statics/Js/index.js b/Statics/Js/index.js index 805b53e..b468417 100644 --- a/Statics/Js/index.js +++ b/Statics/Js/index.js @@ -17,10 +17,10 @@ function slideshow_start(slideNumber = 1) { document.getElementById("slides").style.backgroundImage = `url("${images[slideNumber]}")`; // Untoggle les précedents // Utilisation de ternary, utilisation: condition ? Sivrai : Sifaux - document.getElementById(`slide_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("show_slide"); + document.getElementById(`slide_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("show_block"); document.getElementById(`slideDot_${slideNumber !== 0 ? slideNumber - 1 : images.length - 1}`).classList.toggle("slideSelected"); // Toggle le nouveau texte & selecteur - document.getElementById(`slide_${slideNumber}`).classList.toggle("show_slide"); + document.getElementById(`slide_${slideNumber}`).classList.toggle("show_block"); document.getElementById(`slideDot_${slideNumber}`).classList.toggle("slideSelected") // +1 sauf si fin if (slideNumber < images.length - 1) { diff --git a/Statics/Js/main.js b/Statics/Js/main.js index b4d0894..6fe6dec 100644 --- a/Statics/Js/main.js +++ b/Statics/Js/main.js @@ -7,6 +7,17 @@ // https://stackoverflow.com/ // Changement de langue -document.getElementById("langSel").addEventListener("change", () => { - document.getElementById("langForm").submit(); +document.getElementById("navSelLang").addEventListener("change", () => { + document.getElementById("navFormLang").submit(); }); + +// TODO: A commenter +function show(parentId, element, id, className) { + let elements = document.getElementById(parentId).getElementsByTagName(element); + elements[id].classList.add(className); + for (i = 0; i < elements.length; i++) { + if (elements[i].id !== id) { + elements[i].classList.remove(className); + } + } +}
\ No newline at end of file diff --git a/Statics/Js/myMission.js b/Statics/Js/myMission.js deleted file mode 100644 index 36c2648..0000000 --- a/Statics/Js/myMission.js +++ /dev/null @@ -1,11 +0,0 @@ - -//table id pendingTable, ongoingTable, completedTable -function show(tableId) { - let tables = document.getElementById("myMission").getElementsByTagName("table"); - tables[tableId].classList.add("show_table"); - for (i = 0; i < tables.length; i++) { - if (tables[i].id !== tableId) { - tables[i].classList.remove("show_table"); - } - } -}
\ No newline at end of file diff --git a/Views/Includes/en/message.php b/Templates/Includes/en/message.php index 344b0b8..aa3415f 100644 --- a/Views/Includes/en/message.php +++ b/Templates/Includes/en/message.php @@ -1,7 +1,11 @@ <?php -// **************************************************************************** -// Description: Texte des messages. -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Texte des messages. # +// # # +// ############################################################################ + $success = "Success"; $error = "Error"; $redirect = "Redirecting in "; @@ -135,7 +139,7 @@ $messageText = [ "title" => "Register an user.", "info" => "User successfully registered !", "timer" => true, - "toSrc" => true + "toSrc" => false ], "fail" => [ "success" => false, @@ -196,5 +200,23 @@ $messageText = [ "toSrc" => true ] ], + // Suppression mission + "adminDelMission" => [ + "success" => [ + "success" => true, + "title" => "Deletion of a mission.", + "info" => "Mission deleted !", + "timer" => true, + "toSrc" => true + ], + "delete" => [ + "success" => false, + "title" => "Deletion of a mission.", + "info" => "Mission not deleted !", + "timer" => true, + "toSrc" => true + ] + ] ]; + ?>
\ No newline at end of file diff --git a/Views/Includes/en/table.php b/Templates/Includes/en/table.php index 93a0e86..6fe716a 100644 --- a/Views/Includes/en/table.php +++ b/Templates/Includes/en/table.php @@ -1,17 +1,35 @@ <?php -// **************************************************************************** -// Description: En-tête des tableaux -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: En-tête des tableaux # +// # # +// ############################################################################ + $header = [ - // En-tête des colonnes du tableau Delete de l'admin. - "adminDel" => [ - "ID Number", + // En-tête des colonnes du tableau des utilisateurs de l'admin. + "adminUsers" => [ + "User ID", "Email", "Crypted Password", "Token for auto-login", "Inscription date", "User status" ], + // En-tête des colonnes du tableau des missions de l'admin. + "adminMissions" => [ + "Mission ID", + "Request Date", + "Subject", + "Note", + "Review", + "Accepted by pro date", + "Validated by client date", + "Validated by pro date", + "Client ID", + "Pro ID", + "Job" + ], // En-tête des colonnes du tableau Search de l'index. "search" => [ "Last name", @@ -64,4 +82,5 @@ $header = [ "Note" ] ]; + ?>
\ No newline at end of file diff --git a/Views/Includes/en/text.php b/Templates/Includes/en/text.php index 21e273b..3e6b981 100644 --- a/Views/Includes/en/text.php +++ b/Templates/Includes/en/text.php @@ -1,18 +1,23 @@ <?php -// **************************************************************************** -// Description: Texte du site -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Texte du site # +// # # +// ############################################################################ + $text = [ "incl_form_admin" => [ - "h2Job" => "Manage job category", - "formJobAddEn" => "Name of the category in English", - "formJobAddFr" => "Name of the category in French", - "submitJobAdd" => "Add", - "selJobDel" => "Choose a job to delete", - "submitJobDel" => "Delete", - "h2Del" => "Delete an user", - "formDel" => "ID to delete", - "submitDel" => "Delete", + "btManageJob" => "Manage jobs categories", + "btManageUser" => "Manage users", + "btManageMission" => "Manage missions", + "formJobAddEn" => "Name of the category in English", + "formJobAddFr" => "Name of the category in French", + "submitJobAdd" => "Add", + "selJobDel" => "Choose a job to delete", + "submitJobDel" => "Delete", + "formDel" => "ID to delete", + "submitDel" => "Delete", ], "incl_global_footer" => [ "main" => "Made by Debulois Quentin for my professional folder.<br>December 2021, all rights reserved.", @@ -78,11 +83,12 @@ $text = [ "submit" => "Sign-up" ], "incl_index_search" => [ - "h2" => "Search by lastname", - "searchBar" => "Lastname", - "submit" => "Search", - "moreInfo" => "More info", - "mandate" => "Mandate" + "h2" => "Search a professional", + "searchBarName" => "Search by name", + "searchBarJob" => "Search by job", + "submit" => "Search", + "moreInfo" => "More info", + "mandate" => "Mandate" ], "incl_index_slideshow" => [ "slide1" => "Find the right proffessional for you.<br><br>For all your needs.<br><br><span>AlphaJob</span>", @@ -90,4 +96,5 @@ $text = [ "slide3" => "Find the bests offers for your website today.<br><br>Discover our ready to use solutions.<br><br><span>AlphaJob</span>" ] ]; + ?>
\ No newline at end of file diff --git a/Templates/Includes/en/title.php b/Templates/Includes/en/title.php new file mode 100644 index 0000000..c4fbeca --- /dev/null +++ b/Templates/Includes/en/title.php @@ -0,0 +1,20 @@ +<?php + +// ############################################################################ +// # # +// # Description: Titre des pages # +// # # +// ############################################################################ + +$title = [ + "index" => "AlphaJob - Index", + "login" => "AlphaJob - Login", + "message" => "AlphaJob - Message", + "mission" => "AlphaJob - Manage a mission", + "myMission" => "AlphaJob - My missions", + "register" => "AlphaJob - Register", + "userInfo" => "AlphaJob - My user informations", + "admin" => "AlphaJob - Administration" +]; + +?>
\ No newline at end of file diff --git a/Views/Includes/fr/message.php b/Templates/Includes/fr/message.php index e9de43d..424ff1e 100644 --- a/Views/Includes/fr/message.php +++ b/Templates/Includes/fr/message.php @@ -1,7 +1,11 @@ <?php -// **************************************************************************** -// Description: Texte des messages. -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Texte des messages. # +// # # +// ############################################################################ + $success = "Réussite"; $error = "Erreur"; $redirect = "Redirection dans "; @@ -133,9 +137,9 @@ $messageText = [ "success" => [ "success" => true, "title" => "Enregistrement d'un utilisateur.", - "info" => "Utilisateur enregustré!", + "info" => "Utilisateur enregistré!", "timer" => true, - "toSrc" => true + "toSrc" => false ], "fail" => [ "success" => false, @@ -146,7 +150,7 @@ $messageText = [ ] ], // Delete utilisateur - "adminDelete" => [ + "adminDelUser" => [ "success" => [ "success" => true, "title" => "Suppression d'un utilisateur.", @@ -196,5 +200,23 @@ $messageText = [ "toSrc" => true ] ], + // Suppression mission + "adminDelMission" => [ + "success" => [ + "success" => true, + "title" => "Suppression d'une mission.", + "info" => "Mission supprimée!", + "timer" => true, + "toSrc" => true + ], + "delete" => [ + "success" => false, + "title" => "Suppression d'une mission.", + "info" => "Erreur, la mission n'a pas été supprimée.", + "timer" => true, + "toSrc" => true + ] + ] ]; + ?>
\ No newline at end of file diff --git a/Views/Includes/fr/table.php b/Templates/Includes/fr/table.php index 90fb806..29246e5 100644 --- a/Views/Includes/fr/table.php +++ b/Templates/Includes/fr/table.php @@ -1,17 +1,35 @@ <?php -// **************************************************************************** -// Description: En-tête des tableaux. -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: En-tête des tableaux. # +// # # +// ############################################################################ + $header = [ - // En-tête des colonnes du tableau Delete de l'admin. - "adminDel" => [ - "Numéro ID", + // En-tête des colonnes du tableau des utilisateurs de l'admin. + "adminUsers" => [ + "ID utilisateur", "Email", "Mot de passe chiffré", "Jeton d'auto-connection", "Date d'inscription", "Status de l'utilisateur" ], + // En-tête des colonnes du tableau des missions de l'admin. + "adminMissions" => [ + "ID mission", + "Date de mandatement", + "Sujet", + "Note", + "Avis", + "Date d'acceptation par le pro", + "Date de validation du client", + "Date de validation du pro", + "ID du client", + "ID du pro", + "Emploi" + ], // En-tête des colonnes du tableau Search de l'index. "search" => [ "Nom", @@ -64,4 +82,5 @@ $header = [ "Note" ] ]; + ?>
\ No newline at end of file diff --git a/Views/Includes/fr/text.php b/Templates/Includes/fr/text.php index 85814e0..030d32f 100644 --- a/Views/Includes/fr/text.php +++ b/Templates/Includes/fr/text.php @@ -1,18 +1,23 @@ <?php -// **************************************************************************** -// Description: Texte du site -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Texte du site # +// # # +// ############################################################################ + $text = [ "incl_form_admin" => [ - "h2Job" => "Gestion des categories d'emploi", - "formJobAddEn" => "Nom de la catégorie en Englais", - "formJobAddFr" => "Nom de la catégorie en Français", - "submitJobAdd" => "Ajouter", - "selJobDel" => "Choisir une categorie à suppr.", - "submitJobDel" => "Suppr.", - "h2Del" => "Supprimer un utilisateur", - "formDel" => "ID à supprimer", - "submitDel" => "Supprimer", + "btManageJob" => "Gestion des emplois", + "btManageUser" => "Gestion des utilisateurs", + "btManageMission" => "Gestion des missions", + "formJobAddEn" => "Nom de la catégorie en Englais", + "formJobAddFr" => "Nom de la catégorie en Français", + "submitJobAdd" => "Ajouter", + "selJobDel" => "Choisir une categorie à suppr.", + "submitJobDel" => "Suppr.", + "formDel" => "ID à supprimer", + "submitDel" => "Supprimer", ], "incl_global_footer" => [ "main" => "Réalisé par Debulois Quentin pour mon dossier professionel.<br>Decembre 2021, tous droits réservés.", @@ -78,11 +83,12 @@ $text = [ "submit" => "S'inscrire" ], "incl_index_search" => [ - "h2" => "Recherche de pro par nom", - "searchBar" => "Nom", - "submit" => "Rechercher", - "moreInfo" => "Plus d'infos", - "mandate" => "Mandater" + "h2" => "Rechercher un professionnel", + "searchBarName" => "Recherche par nom", + "searchBarJob" => "Recherche par catégorie", + "submit" => "Rechercher", + "moreInfo" => "Plus d'infos", + "mandate" => "Mandater" ], "incl_index_slideshow" => [ "slide1" => "Trouvez le proffessionel idéal proche de chez vous.<br><br>Pour tous vos besoins.<br><br><span>AlphaJob</span>", @@ -90,4 +96,5 @@ $text = [ "slide3" => "Les meilleurs offres pour créer votre site Web.<br><br>Découvrez nos solutions clefs en main.<br><br><span>AlphaJob</span>" ] ]; + ?>
\ No newline at end of file diff --git a/Templates/Includes/fr/title.php b/Templates/Includes/fr/title.php new file mode 100644 index 0000000..49285a2 --- /dev/null +++ b/Templates/Includes/fr/title.php @@ -0,0 +1,20 @@ +<?php + +// ############################################################################ +// # # +// # Description: Titre des pages # +// # # +// ############################################################################ + +$title = [ + "index" => "AlphaJob - Index", + "login" => "AlphaJob - Connection", + "message" => "AlphaJob - Message", + "mission" => "AlphaJob - Gestion d'une mission", + "myMission" => "AlphaJob - Mes missions", + "register" => "AlphaJob - Inscription", + "userInfo" => "AlphaJob - Mes informations", + "admin" => "AlphaJob - Administration" +]; + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_form_admin.php b/Templates/Includes/incl_form_admin.php new file mode 100644 index 0000000..52430d9 --- /dev/null +++ b/Templates/Includes/incl_form_admin.php @@ -0,0 +1,198 @@ +<?php + +// ############################################################################ +// # # +// # Description: Récupération de tous les utilisateurs pour choix d'une # +// # suppression par son ID de table. # +// # # +// ############################################################################ + +// Import du texte en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); +// Import des en-tête des tables. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/table.php"); +// Import des metodes de la base de donnée pour les recherches. +require_once(dirname( __FILE__ )."./../../Database/meth_dbadmin.php"); +require_once(dirname( __FILE__ )."./../../Database/meth_dbsearch.php"); +require_once(dirname( __FILE__ )."./../../Database/meth_dbmission.php"); + +// Instanciation de la bdd avec les méthodes de recherche. +$dbadmin = new DbAdmin; +$dbsearch = new DbSearch; +$dbmission = new DbMission; + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'.PHP_EOL); + +// **************************************************************************** +// DIV PRINCIPALE +// **************************************************************************** +echo('<!-- Division principale --> +<main id="mainAdmin">'.PHP_EOL); + +// **************************************************************************** +// BOUTTONS DE NAVIGATION +// **************************************************************************** +echo('<!-- Bouttons de navigation --> +<div id="adminButtons"> + <button onclick="show(\'mainAdmin\', \'section\', \'secAdminJobs\', \'show_flex\')"><h2>'.$text[basename(__FILE__, ".php")]["btManageJob"].'</h2></button> + <button onclick="show(\'mainAdmin\', \'section\', \'secAdminUsers\', \'show_flex\')"><h2>'.$text[basename(__FILE__, ".php")]["btManageUser"].'</h2></button> + <button onclick="show(\'mainAdmin\', \'section\', \'secAdminMissions\', \'show_flex\')"><h2>'.$text[basename(__FILE__, ".php")]["btManageMission"].'</h2></button> +</div>'.PHP_EOL); + +// **************************************************************************** +// SECTION AJOUT/SUPPRESSION D'EMPLOI +// **************************************************************************** +// Form pour ajout et form pour suppression d'une catégorie d'emploi +echo('<!-- Section gestion des emplois --> +<section id="secAdminJobs"> + <form action="./../../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-briefcase"></i> + <input type="text" name="addJobNameEn" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["formJobAddEn"].'" required> + <i class="fas fa-briefcase" style="margin-left: 5%;"></i> + <input type="text" name="addJobNameFr" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["formJobAddFr"].'" required> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitJobAdd"].'"> + </form> + <!-- Form pour suppression d une catégorie d emploi --> + <form action="/../Core/wrapper.php" method="post"> + <label> + <select name="delJobId" required> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["selJobDel"].'</option>'.PHP_EOL); +$allJobs = $dbsearch->get_job_all(); +for ($i = 0; $i < count($allJobs); $i++){ + echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); +} +echo(' </select> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitJobDel"].'"> + </form> +</section>'.PHP_EOL); + +// **************************************************************************** +// SECTION POUR LA SUPPRSION D'UTILISATEUR ET TABLEAU +// **************************************************************************** +// Form pour suppression d'un utilisateur +echo('<!-- Section supression d\' un utilisateur --> +<section id="secAdminUsers"> + <form action="./../../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-trash-alt"></i> + <input type="text" name="delUserId" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["formDel"].'" required> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitDel"].'"> + </form>'.PHP_EOL); + +// Récupération de tous les utilisateurs. +$allUsers = $dbadmin->get_all_users_account(); +// Affichage du tableau. +echo("<!-- Tableau des utilisateurs--> +<table> + <!-- En-tête --> + <tr>".PHP_EOL); +// Affichage des en-tête de colonne. +for ($i = 0; $i < count($header["adminUsers"]); $i++) { + echo(" <th>".$header["adminUsers"][$i]."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +// Affichage du résultat de la récupération de tous les utilisateurs. +for ($i = 0; $i < count($allUsers); $i++) { + echo(" <!-- Utilisateurs --> + <tr>".PHP_EOL); + foreach ($allUsers[$i] as $key => $value) { + switch ($key) { + case "userStatus": + switch ($value) { + case 0: + echo(" <td><pre>Admin<pre></td>".PHP_EOL); + break; + case 1: + echo(" <td><pre>Pro<pre></td>".PHP_EOL); + break; + case 2: + echo(" <td><pre>Client<pre></td>".PHP_EOL); + break; + } + break; + default: + echo(" <td><pre>".$value."</pre></td>".PHP_EOL); + break; + } + } + echo(" </tr>".PHP_EOL); +} +echo('</table> +</section>'.PHP_EOL); + +// **************************************************************************** +// SECTION POUR LA SUPPRESSION D'UNE MISSION ET TABLEAU +// **************************************************************************** +// Form pour suppression d'une mission +echo('<!-- Section supression d\' une mission --> +<section id="secAdminMissions"> + <form action="./../../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-trash-alt"></i> + <input type="text" name="delMissionId" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["formDel"].'" required> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitDel"].'"> + </form>'.PHP_EOL); + +// Récupération de toutes les missions et des infos des utilisateurs. +$allMissions = $dbmission->get_all_missions(); +// Affichage du tableau. +echo("<!-- Tableau des missions--> +<table> + <!-- En-tête --> + <tr>".PHP_EOL); +// Affichage des en-tête de colonne. +for ($i = 0; $i < count($header["adminMissions"]); $i++) { + echo(" <th>".$header["adminMissions"][$i]."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +// Affichage du résultat de la récupération de tous les utilisateurs. +for ($i = 0; $i < count($allMissions); $i++) { + echo(" <!-- missions --> + <tr>".PHP_EOL); + for ($j = 0; $j < count($allMissions[$i]); $j++) { + switch ($j) { + case 8 : + case 9 : + $userInfo = $dbsearch->get_user_info_by_userid($allMissions[$i][$j]); + if ($userInfo && $userInfo[0]["lastname"] !== "") { + echo(" <td><pre>".$userInfo[0]["lastname"]."</pre></td>".PHP_EOL); + } else { + echo(" <td><pre> N/A </pre></td>".PHP_EOL); + } + break; + case 10: + $job = $dbsearch->get_job_by_jobid($allMissions[$i][$j]); + if ($job && $job[0]["jobCategoryName".ucwords($_SESSION["lang"])] !== "") { + echo(" <td><pre>".$job[0]["jobCategoryName".ucwords($_SESSION["lang"])]."</pre></td>".PHP_EOL); + } else { + echo(" <td><pre> N/A </pre></td>".PHP_EOL); + } + break; + default: + echo(" <td><pre>".$allMissions[$i][$j]."</pre></td>".PHP_EOL); + break; + } + } + echo(" </tr>".PHP_EOL); +} +echo('</table> +</section>'.PHP_EOL); + +echo('<!-- Espace vide si le form est petit --> +<div class="spacer"></div>'); + +// **************************************************************************** +// FIN DIV PRINCIPALE +// **************************************************************************** +echo('</main>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_form_login.php b/Templates/Includes/incl_form_login.php new file mode 100644 index 0000000..d0e8b25 --- /dev/null +++ b/Templates/Includes/incl_form_login.php @@ -0,0 +1,41 @@ +<?php + +// ############################################################################ +// # # +// # Description: Formulaire de login # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Séparateur --> +<div class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE AVEC TITRE ET FORM DE CONNEXION +// **************************************************************************** +echo('<!-- Div principale --> +<main id="mainLogin"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <form action="/../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-envelope-square"></i> + <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" required> + </label> + <label> + <i class="fas fa-lock"></i> + <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" required> + </label> + <label class="flex-center"> + <input type="checkbox" name="rememberMe" id="rememberMe"> + '.$text[basename(__FILE__, ".php")]["rememberMe"].' + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> +</main>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_form_mission.php b/Templates/Includes/incl_form_mission.php new file mode 100644 index 0000000..b378b93 --- /dev/null +++ b/Templates/Includes/incl_form_mission.php @@ -0,0 +1,95 @@ +<?php + +// ############################################################################ +// # # +// # Description: Formulaire d'enregistrement d'une mission # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); +// Import des méthodes de la base de donnée pour les recherches. +require_once(dirname( __FILE__ )."./../../Database/meth_dbsearch.php"); + +// Si demande de mandatement d'une mission +if (isset($_SESSION["missionInitiate"]) + && count($_SESSION["missionInitiate"]) > 0 +) { + // **************************************************************************** + // SEPARATEUR + // **************************************************************************** + echo('<!-- Séparateur --> + <div class="separator"></div>'); + + // **************************************************************************** + // DIV PRINCIPALE AVEC TITRE ET FORM POUR MANDATEMENT DE MISSION + // **************************************************************************** + echo('<!-- Division principale --> + <main id="mainMission"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <form id="missionForm" action="/../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-edit"></i> + <input type="text" name="missionSubject" placeholder="'.$text[basename(__FILE__, ".php")]["subject"].'" maxlength="128" required> + </label> + <select name="missionJob" required> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); + // On loop à traves les emplois du pro et on récupère l'id et le nom pour peupler le select + for ($i = 0; $i < count($_SESSION["missionInitiate"]["proJobs"]); $i++) { + $categoryName = $_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]; + $value = $_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryId"]; + echo(' <option value="'.$value.'">'.$categoryName.'</option>'.PHP_EOL); + } + echo(' </select> + <input type="hidden" name="missionProId" value="'.$_SESSION["missionInitiate"]["proId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> + </main>'.PHP_EOL); + unset($_SESSION["missionInitiate"]); + +// Si la mission est terminée on permet de laisser un avis +} elseif (isset($_SESSION["missionCompleted"]) + && count($_SESSION["missionCompleted"]) > 0 +) { + // **************************************************************************** + // SEPARATEUR + // **************************************************************************** + echo('<!-- Séparateur --> + <div class="separator"></div>'); + + // **************************************************************************** + // DIV PRINCIPALE AVEC TITRE ET FORMULAIRE D'ENREGISTREMENT D'UN AVIS + // **************************************************************************** + echo('<!-- Division principale --> + <main id="mainMission"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <form id="missionForm" action="/../Core/wrapper.php" method="post"> + <label class="flex-start"> + <i class="far fa-star"></i> + <select name="note" required> + <option value="" selected disabled hidden>Note</option> + <option value="5">5</option> + <option value="4">4</option> + <option value="3">3</option> + <option value="2">2</option> + <option value="1">1</option> + <option value="0">0</option> + </select> + </label> + <label> + <i class="far fa-comment-alt"></i> + <textarea name="review" placeholder="'.$text[basename(__FILE__, ".php")]["review"].'" required></textarea> + </label> + <input type="hidden" name="missionCompletedId" value="'.$_SESSION["missionCompleted"]["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> + </main>'.PHP_EOL); + unset($_SESSION["missionCompleted"]); + +// Sinon renvoie vers mes mission (F5 w/ unset) +} else { + header("Location: /Templates/myMission.php"); + die(); +} + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_form_register.php b/Templates/Includes/incl_form_register.php new file mode 100644 index 0000000..7dd324c --- /dev/null +++ b/Templates/Includes/incl_form_register.php @@ -0,0 +1,42 @@ +<?php + +// ############################################################################ +// # # +// # Description: Formulaire pour une inscription # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE AVEC TITRE ET FORMULAIRE POUR S'INSCRIRE +// **************************************************************************** +echo('<!-- Division principale --> +<main id="mainRegister"> + <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> + <!-- Formulaire d\'inscription --> + <form action="/../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-envelope-square"></i> + <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" maxlength="128" required> + </label> + <label> + <i class="fas fa-lock"></i> + <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> + </label> + <label class="info">'.$text[basename(__FILE__, ".php")]["notice"].'</label> + <label for="isAdmin"><input type="radio" id="isAdmin" name="userStatus" value="0">'.$text[basename(__FILE__, ".php")]["isAdmin"].'</label> + <label for="isPro"><input type="radio" id="isPro" name="userStatus" value="1">'.$text[basename(__FILE__, ".php")]["isPro"].'</label> + <label for="isClient"><input type="radio" id="isClient" name="userStatus" value="2">'.$text[basename(__FILE__, ".php")]["isClient"].'</label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> +</main>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_form_userInfo.php b/Templates/Includes/incl_form_userInfo.php new file mode 100644 index 0000000..5873a5a --- /dev/null +++ b/Templates/Includes/incl_form_userInfo.php @@ -0,0 +1,137 @@ +<?php + +// ############################################################################ +// # # +// # Description: Formulaire pour modifier les informations de l'utilisateur # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); +// Import des méthodes de la base de donnée pour les recherches. +require_once(dirname( __FILE__ )."./../../Database/meth_dbsearch.php"); + +// Instanciation de la bdd avec les méthodes de recherche. +$dbsearch = new DbSearch; +// Recherches des informations avec l'id de l'utilisateur actuellement connecté. +$info = $dbsearch->get_user_info_by_userid($_SESSION["userId"]); + +// Si pas encore d'infos pour cette utilisateur on initialise avec des champs vide +if (!$info) { + $info = [ + ["lastname" => "", + "firstname" => "", + "phoneNumber" => "", + "adress" => "", + "zipCode" => "", + "city" => "", + "degree" => "", + "capability" => "", + "description" => ""] + ]; +} + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE AVEC TITRE ET FORMULAIRE COMMUN AUX PROS ET CLIENTS +// **************************************************************************** +echo('<!-- Division principale --> +<main id="mainUserInfo"> +<!-- Modification des infos de l\'utilisateur --> +<h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> +<form action="/../Core/wrapper.php" method="post"> + <label> + <i class="fas fa-users"></i> + <input type="text" name="lastname" id="lastname" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["lastname"].'" value="'.$info[0]["lastname"].'" required> + </label> + <label> + <i class="fas fa-user"></i> + <input type="text" name="firstname" id="firstname" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["firstname"].'" value="'.$info[0]["firstname"].'" required> + </label> + <label> + <i class="fas fa-mobile-alt"></i> + <input type="text" name="phoneNumber" id="phoneNumber" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["phoneNumber"].'" value="'.$info[0]["phoneNumber"].'" required> + </label> + <label> + <i class="fas fa-home"></i> + <input type="text" name="adress" id="adress" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["adress"].'" value="'.$info[0]["adress"].'" required> + </label> + <label> + <i class="fas fa-map-marker-alt"></i> + <input type="text" name="zipCode" id="zipCode" maxlength="6" placeholder="'.$text[basename(__FILE__, ".php")]["zipCode"].'" value="'.$info[0]["zipCode"].'" required> + </label> + <label> + <i class="fas fa-city"></i> + <input type="text" name="city" id="city" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["city"].'" value="'.$info[0]["city"].'" required> + </label>'.PHP_EOL); + +// **************************************************************************** +// EXTENSION DU FORMULAIRE AVEC LA PARTIE UNIQUEMENT RESERVEE AUX PROS +// **************************************************************************** +if ($_SESSION["userStatus"] == 1) { + // Récupération de tous les emplois ainsi que ceux deja sélectionnés par le pro + $allJobs = $dbsearch->get_job_all(); + $proJobs = $dbsearch->get_pro_job_by_proid($_SESSION["userId"]); + + // **************************************************************************** + // PARTIE SELECTION D'UN EMPLOI + // **************************************************************************** + echo(' <label id="userJob"> + <i class="fas fa-wrench"></i> + <p>Selectionner mes jobs:</p>'.PHP_EOL); + echo(' <select id="jobsSel"> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); + //Peuplement du select qui comprend tous les emplois + for ($i = 0; $i < count($allJobs); $i++) { + echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); + } + echo(' </select> + <button type="button" onclick="add()">'.$text[basename(__FILE__, ".php")]["jobsAdd"].'</button> + </label>'.PHP_EOL); + + // **************************************************************************** + // PARTIE EMPLOI DEJA SELECTIONNE + // **************************************************************************** + echo(' <ul id="jobsList">'.PHP_EOL); + for ($i = 0; $i < count($proJobs); $i++) { + echo(' <li>'.$proJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</li>'.PHP_EOL); + } + echo(' </ul> + <input type="hidden" name="jobs" id="jobs" value="">'.PHP_EOL); + + // **************************************************************************** + // PARTIE DIPLOME, CAPACITES & DESCRIPTION + // **************************************************************************** + echo(' <label> + <i class="fas fa-user-graduate"></i> + <input type="text" name="degree" id="degree" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["degree"].'"value="'.$info[0]["degree"].'" required> + </label> + <label> + <i class="fas fa-cogs"></i> + <textarea name="capability" id="capability" placeholder="'.$text[basename(__FILE__, ".php")]["capability"].'" cols="30" rows="2" required>'.$info[0]["capability"].'</textarea> + </label> + <label> + <i class="fas fa-file-signature"></i> + <textarea name="description" id="description" placeholder="'.$text[basename(__FILE__, ".php")]["description"].'" cols="30" rows="2" required>'.$info[0]["description"].'</textarea> + </label>'.PHP_EOL); + + // **************************************************************************** + // CHARGEMENT ET DECLENCHEMENT DU JAVASCRIPT DEDIE A CETTE PAGE + // **************************************************************************** + echo(' <script src="/Statics/Js/userinfo.js"></script> + <script>init()</script>'); +} + +// **************************************************************************** +// FIN DU FORM ET DE LA DIV PRINCIPALE +// **************************************************************************** +echo(' <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> +</form> +</main>'); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_global_footer.php b/Templates/Includes/incl_global_footer.php new file mode 100644 index 0000000..a11ed02 --- /dev/null +++ b/Templates/Includes/incl_global_footer.php @@ -0,0 +1,26 @@ +<?php + +// ############################################################################ +// # # +// # Description: Pied de page # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'.PHP_EOL); + +// **************************************************************************** +// PIED DE PAGE +// **************************************************************************** +echo('<!-- Pied de page --> +<footer> + <p>'.$text[basename(__FILE__, ".php")]["main"].'</p> +</footer>'.PHP_EOL) + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_global_header.php b/Templates/Includes/incl_global_header.php new file mode 100644 index 0000000..3ad0965 --- /dev/null +++ b/Templates/Includes/incl_global_header.php @@ -0,0 +1,22 @@ +<?php + +// ############################################################################ +// # # +// # Description: Header commmun à toutes les pages # +// # # +// ############################################################################ + +// **************************************************************************** +// METADATA COMMUNE A TOUTES LES PAGES +// **************************************************************************** +echo('<!-- Table d\'encodage --> +<meta charset="UTF-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<link href="/Statics/Css/main.css" rel="stylesheet"> +<!-- https://fontawesome.com/v5.15/how-to-use/on-the-web/setup/hosting-font-awesome-yourself --> +<link href="/Statics/Css/Fontsawesome/all.css" rel="stylesheet"> +<!-- https://semantic-ui.com/elements/flag.html --> +<link href="/Statics/Css/Flags/flag.css" rel="stylesheet">'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_global_message.php b/Templates/Includes/incl_global_message.php new file mode 100644 index 0000000..1afcb02 --- /dev/null +++ b/Templates/Includes/incl_global_message.php @@ -0,0 +1,71 @@ +<?php + +// ############################################################################ +// # # +// # Description: Partie principale de la page des messages # +// # # +// ############################################################################ + +// Import des différents messages possibles. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/message.php"); + +// Récupération du message à afficher et de son status +$name = $_SESSION["message"][0]; +$status = $_SESSION["message"][1]; + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE ET TITRE +// **************************************************************************** +echo('<!-- Division principale --> +<main id="mainMessage"> + <h2>'.$messageText[$name][$status]["title"].'</h2>'); + +// **************************************************************************** +// TITRE POUR SIGNIFIER SI L'OPERATION A REUSSI OU NON +// **************************************************************************** +if ($messageText[$name][$status]["success"]) { + echo('<h3 class="success">'.$success.'</h3>'); +} else { + echo('<h3 class="error">'.$error.'</h3>'); +} + +// **************************************************************************** +// TEXTE PRINCIPAL +// **************************************************************************** +echo('<!-- Texte principal --> +<p>'.$messageText[$name][$status]["info"].'</p> +<p id="redirect" class="info">'.$redirect.'</p></main> +<!-- Chargement du javascript dédié à cette page --> +<script src="/Statics/Js/message.js"></script>'); + +// **************************************************************************** +// RECUPERATION DE LA PAGE VERS LAQUELLE REDIRIGER SI CE N'EST PAS L'INDEX +// **************************************************************************** +if ($messageText[$name][$status]["toSrc"]) { + if ($_SESSION["src"] !== "index") { + $dest = "Templates/".$_SESSION["src"]; + } else { + $dest = "index"; + } +} else { + $dest = "index"; +} + +// **************************************************************************** +// DECLENCHEMENT DU JAVASCRIPT AVEC LA PAGE DE DESTINATION DONNEE EN ARGUMENT +// **************************************************************************** +if ($messageText[$name][$status]["timer"]) { + echo('<!-- Redirection avec timer --> + <script>start_timer("'.$dest.'");</script>'); +} else { + echo('<!-- Redirection sans timer --> + <script>redirect("'.$dest.'")</script>'); +} + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_global_navbar.php b/Templates/Includes/incl_global_navbar.php new file mode 100644 index 0000000..899fa90 --- /dev/null +++ b/Templates/Includes/incl_global_navbar.php @@ -0,0 +1,72 @@ +<?php + +// ############################################################################ +// # # +// # Description: La navbar # +// # # +// ############################################################################ + +// Switch -> https://www.php.net/manual/fr/control-structures.switch.php +// https://stackoverflow.com/questions/6330114/do-you-need-break-in-switch-when-return-is-used + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); + +// Navbar avec titre et bouttons de navigations en fonction du type de compte +echo('<!-- Navbar --> +<nav> + <!-- Titre --> + <a id="navTitle" href="/"><h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2></a> + <!-- Espace vide --> + <div class=spacer></div> + <!-- Liste de lien pour la navigation --> + <ul> + <a href="/index.php#separator2"><li><i class="fas fa-search"></i> '.$text[basename(__FILE__, ".php")]["btnSearch"].'</li></a>'.PHP_EOL); + +// Affichage des éléments en fonction de si l'utilisateur est connecté ou non et de ses fonctions. +if (isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + && $_SESSION["loggedIn"] == "1" +) { + switch ($_SESSION["userStatus"]) { + case 0: + $status = 'Admin'; + echo(' <a href="/Templates/admin.php"><li><i class="fas fa-cog"></i> '.$text[basename(__FILE__, ".php")]["btnAdmin"].'</li></a>'.PHP_EOL); + break; + case 1: + $status = 'Pro'; + echo(' <a href="/Templates/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); + echo(' <a href="/Templates/userInfo.php"><li><i class="fas fa-user"></i> '.$text[basename(__FILE__, ".php")]["btnInfos"].'</li></a>'); + break; + case 2: + $status = 'Client'; + echo(' <a href="/Templates/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); + echo(' <a href="/Templates/userInfo.php"><li><i class="fas fa-user"></i> '.$text[basename(__FILE__, ".php")]["btnInfos"].'</li></a>'); + break; + } + echo(' <a href="/Templates/logout.php"><li><i class="fas fa-sign-out-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogout"].'</li></a>'.PHP_EOL); + echo(' <li>'.$_SESSION["email"].'<br>'.$status.'</li>'.PHP_EOL); +} else { + echo(' <a href="/Templates/login.php"><li><i class="fas fa-sign-in-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogin"].'</li></a> + <a href="/Templates/register.php"><li><i class="fas fa-user-plus"></i> '.$text[basename(__FILE__, ".php")]["btnRegister"].'</li></a>'.PHP_EOL); +} +echo(' </ul>'.PHP_EOL); + +// Affichage du drapeau de la langue actuellement sélectionnée. +$flags = [ + "en" => "gb uk", + "fr" => "fr" +]; +echo(' <!-- Choix de la langue --> + <form action="/../Core/wrapper.php" method="post" id="navFormLang"> + <label> + <i class="'.$flags[$_SESSION["lang"]].' flag"></i>'.$text[basename(__FILE__, ".php")]["lang"].' + <select name="langSel" id="navSelLang" required> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["btnLang"].'</option> + <option value="en">English</option> + <option value="fr">Français</option> + </select> + </label> + </form> +</nav>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_index_search.php b/Templates/Includes/incl_index_search.php new file mode 100644 index 0000000..cad6f2d --- /dev/null +++ b/Templates/Includes/incl_index_search.php @@ -0,0 +1,184 @@ +<?php + +// ############################################################################ +// # # +// # Description: Partie recherche de l'index. # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); +// Import des en-têtes des tables. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/table.php"); +require_once(dirname( __FILE__ )."./../../Database/meth_dbsearch.php"); + +$dbsearch = new DbSearch; + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div id="separator2" class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE +// **************************************************************************** +echo('<!-- Division principale --> +<main id="mainSearch">'.PHP_EOL); + +// Form pour la recherche par nom et envoi au wrappeur. +echo('<!-- Form de recherche --> +<h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> +<div> + <form action="/Core/wrapper.php" method="post"> + <label> + <i class="fas fa-search"></i> + <input type="search" name="searchByName" id="searchBar"placeholder="'.$text[basename(__FILE__, ".php")]["searchBarName"].'" required> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> + <form action="/Core/wrapper.php" method="post"> + <label> + <i class="fas fa-search"></i> + <select name="searchByJob" required> + <option value="" selected>'.$text[basename(__FILE__, ".php")]["searchBarJob"].'</option>'.PHP_EOL); +$allJobs = $dbsearch->get_job_all(); +for ($i = 0; $i < count($allJobs); $i++){ + echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); +} +echo(' </select> + </label> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> + </form> +</div>'.PHP_EOL); + +// Si l'index est chargé avec des données dans la variable "search" de la session, +// c'est qu'une recherche à été effectuée, on affiche alors le contenu de cette recherche en tableau. +if (isset($_SESSION["search"])) { + echo("<table>"); + // Si la variable isResearch est vrai, c'est une rechreche. + if ($_SESSION["search"]["isResearch"]) { + echo("<tr>"); + for ($i = 0; $i < count($header["search"]); $i++) { + echo("<th><pre>".$header["search"][$i]."</pre></th>"); + } + echo("</tr>"); + foreach ($_SESSION["search"]["result"] as $result) { + echo("<tr>"); + echo("<td><pre>".$result["lastname"]."</pre></td>"); + echo("<td><pre>".$result["firstname"]."</pre></td>"); + // jobs + if (count($result["jobs"]) > 0) { + $jobsName = array(); + for ($i = 0; $i < count($result["jobs"]); $i++) { + array_push($jobsName, $result["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); + } + echo("<td><pre>".join(", ", $jobsName)."</pre></td>"); + } else { + echo('<td>N/A</td>'); + } + echo("<td><pre>".$result["capability"]."</pre></td>"); + echo("<td><pre>".$result["numberOfMissions"]."</pre></td>"); + echo("<td><pre>".$result["note"]."</pre></td>"); + // I'm a star !! + if ($result["star"]) { + echo('<td>'); + $missingStar = 5 - $result["star"]; + for ($i = 0; $i < $result["star"]; $i++) { + echo('<i class="fa fa-star star checked"></i>'); + } + if ($missingStar) { + for ($i = 0; $i < $missingStar; $i++) { + echo('<i class="fa fa-star star unchecked"></i>'); + } + } + echo("</td>"); + } else { + echo('<td>N/A</td>'); + } + // Si c'est une recherche on ajoute le bouton plus d'info, + // pour plus d'info avec une recherche par Id. + echo('<td> + <form action="/Core/wrapper.php" method="post"> + <input type="hidden" name="moreInfoProId" value="'.$result["userId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["moreInfo"].'"> + </form> + </td> + </tr>'); + } + echo("</table>"); + + // Sinon c'est un "Plus d'info". + } else { + echo('<tr> + <th><pre>'.$header["moreInfos"][0].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["lastname"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][1].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["firstname"].'</pre></td> + </tr>'); + // jobs + if (count($_SESSION["search"]["result"][0]["jobs"]) > 0) { + $jobsName = array(); + for ($i = 0; $i < count($_SESSION["search"]["result"][0]["jobs"]); $i++) { + array_push($jobsName, $_SESSION["search"]["result"][0]["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); + } + echo('<tr> + <th><pre>'.$header["moreInfos"][2].'</pre></th> + <td><pre>'.join(", ", $jobsName).'</pre></td> + </tr>'); + } else { + echo('<tr> + <th><pre>'.$header["moreInfos"][2].'</pre></th> + <td>N/A</td> + </tr>'); + } + echo('<tr> + <th><pre>'.$header["moreInfos"][3].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["degree"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][4].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["capability"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][5].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["description"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][6].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["phoneNumber"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][7].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["adress"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][8].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["zipCode"].'</pre></td> + </tr> + <tr> + <th><pre>'.$header["moreInfos"][9].'</pre></th> + <td><pre>'.$_SESSION["search"]["result"][0]["city"].'</pre></td> + </tr> + </table> + <form action="/Core/wrapper.php" method="post"> + <input type="hidden" name="mandateProId" value="'.$_SESSION["search"]["result"][0]["userId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["mandate"].'"> + </form>'); + } +} + +echo('<!-- Espace vide si le tableau est petit --> +<div class="spacer"></div>'); + +// **************************************************************************** +// FIN DIV PRINCIPALE +// **************************************************************************** +echo('</main>'); + +// On supprime la variable de recherche si elle existe. +unset($_SESSION["search"]); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_index_slideshow.php b/Templates/Includes/incl_index_slideshow.php new file mode 100644 index 0000000..261fd2e --- /dev/null +++ b/Templates/Includes/incl_index_slideshow.php @@ -0,0 +1,34 @@ +<?php + +// ############################################################################ +// # # +// # Description: Partie slide show de l'index # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div id="separator1" class="separator"></div>'); + +// **************************************************************************** +// SLIDESHOW +// **************************************************************************** +echo('<!-- Slideshow --> +<section id="slides"> + <p id="slide_0" class="show_block">'.$text[basename(__FILE__, ".php")]["slide1"].'</p> + <p id="slide_1">'.$text[basename(__FILE__, ".php")]["slide2"].'</p> + <p id="slide_2">'.$text[basename(__FILE__, ".php")]["slide3"].'</p> + <!-- Indicateur de slide actuellement en cour --> + <div id="slideDots"> + <i id="slideDot_0" class="fas fa-circle slideSelected"></i> + <i id="slideDot_1" class="fas fa-circle"></i> + <i id="slideDot_2" class="fas fa-circle"></i> + </div> +</section>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/Includes/incl_table_myMission.php b/Templates/Includes/incl_table_myMission.php new file mode 100644 index 0000000..5e0a7a8 --- /dev/null +++ b/Templates/Includes/incl_table_myMission.php @@ -0,0 +1,183 @@ +<?php + +// ############################################################################ +// # # +// # Description: Tableau correspondant aux missions effectuées # +// # par l'utilisateur. # +// # # +// ############################################################################ + +// Import des textes en fonction de la langue définie dans la variable "lang" de la session. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/text.php"); +// Import des en-tête des tables. +require_once(dirname( __FILE__ )."./".$_SESSION["lang"]."/table.php"); +// Import des metodes de la base de donnée pour les recherches. +require_once(dirname( __FILE__ )."./../../Database/meth_dbsearch.php"); +require_once(dirname( __FILE__ )."./../../Database/meth_dbmission.php"); + +// Instanciation de la bdd avec les méthodes de recherche. +$dbsearch = new DbSearch; +$dbmission = new DbMission; +$missionStatus = [ + "pending" => [], + "ongoing" => [], + "completed" => [] +]; + +// Recherches des missions avec l'id de l'utilisateur actuellement connecté. +switch ($_SESSION["userStatus"]) { + case 1: + $result = $dbmission->get_mission_by_proid($_SESSION["userId"]); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobCategoryId"] = $dbsearch->get_job_by_jobid($result[$i]["jobCategoryId"]); + } + break; + case 2: + $result = $dbmission->get_mission_by_clientid($_SESSION["userId"]); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobCategoryId"] = $dbsearch->get_job_by_jobid($result[$i]["jobCategoryId"]); + } + break; + default: + break; +} + +// Puis on dispatch les missions dans leur categorie +for ($i = 0; $i < count($result); $i++) { + if (!$result[$i]["acceptedByPro"] + ) { + array_push($missionStatus["pending"], $result[$i]); + } elseif (!$result[$i]["validatedByPro"] + || !$result[$i]["validatedByClient"] + ) { + array_push($missionStatus["ongoing"], $result[$i]); + } else { + array_push($missionStatus["completed"], $result[$i]); + } +} + +// **************************************************************************** +// SEPARATEUR +// **************************************************************************** +echo('<!-- Separateur --> +<div class="separator"></div>'); + +// **************************************************************************** +// DIV PRINCIPALE +// **************************************************************************** +echo('<!-- Mes missions --> +<main id="mainMyMission">'); + +// **************************************************************************** +// BOUTTONS DE NAVIGATION +// **************************************************************************** +echo(' <div id="missionButtons"> + <button onclick="show(\'mainMyMission\', \'table\', \'pendingTable\', \'show_table\')"><h2>'.$text[basename(__FILE__, ".php")]["pendingMission"].'</h2></button> + <button onclick="show(\'mainMyMission\', \'table\', \'ongoingTable\', \'show_table\')"><h2>'.$text[basename(__FILE__, ".php")]["ongoingMission"].'</h2></button> + <button onclick="show(\'mainMyMission\', \'table\', \'completedTable\', \'show_table\')"><h2>'.$text[basename(__FILE__, ".php")]["completedMission"].'</h2></button> + </div>'.PHP_EOL); + +// **************************************************************************** +// TABLEAU DES MISSIONS EN ATTENTE +// **************************************************************************** +echo(' <table id="pendingTable"> + <!-- En-tête --> + <tr>'.PHP_EOL); +foreach($header["pendingMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +foreach ($missionStatus["pending"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["date"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td>'); + if ($_SESSION["userId"] == $rows["proId"]) { + echo(' <td> + <form action="/Core/wrapper.php" method="post"> + <input type="hidden" name="acceptedMissionId" value="'.$rows["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["accept"].'"> + </form> + </td>'); + } + echo(' </tr>'.PHP_EOL); +} +echo(' </table>'); + +// **************************************************************************** +// TABLEAU DES MISSIONS EN COURS +// **************************************************************************** +echo(' <table id="ongoingTable"> + <!-- En-tête --> + <tr>'.PHP_EOL); +foreach($header["ongoingMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +foreach ($missionStatus["ongoing"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["acceptedByPro"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td> + <td><pre>'.$rows["validatedByClient"].'</pre></td> + <td><pre>'.$rows["validatedByPro"].'</pre></td>'); + if (!$rows["validatedByClient"] && $_SESSION["userStatus"] == 2 + || (!$rows["validatedByPro"] && $_SESSION["userStatus"] == 1) + ) { + echo(' <td> + <form action="/Core/wrapper.php" method="post"> + <input type="hidden" name="validatedMissionId" value="'.$rows["missionId"].'"> + <input type="submit" value="'.$text[basename(__FILE__, ".php")]["validate"].'"> + </form> + </td>'); + } + echo(' </tr>'.PHP_EOL); +} +echo(' </table>'); + +// **************************************************************************** +// TABLEAU DES MISSIONS TERMINEES +// **************************************************************************** +echo(' <table id="completedTable"> + <!-- En-tête --> + <tr>'.PHP_EOL); +foreach($header["completedMissions"] as $columnHeader) { + echo(" <th>".$columnHeader."</th>".PHP_EOL); +} +echo(" </tr>".PHP_EOL); +foreach ($missionStatus["completed"] as $rows) { + echo(' <!-- Missions --> + <tr> + <td><pre>'.$rows["date"].'</pre></td> + <td><pre>'.$rows["acceptedByPro"].'</pre></td> + <td><pre>'.$rows["validatedByClient"].'</pre></td> + <td><pre>'.$rows["validatedByPro"].'</pre></td> + <td><pre>'.$rows["lastname"].'</pre></td> + <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> + <td><pre>'.$rows["subject"].'</pre></td>'); + if ($rows["review"]) { + echo('<td><pre>'.$rows["review"].'</pre></td>'); + } else { + echo('<td><pre>N/A</pre></td>'); + } + if ($rows["note"]) { + echo('<td><pre>'.$rows["note"].'</pre></td>'); + } else { + echo('<td><pre>N/A</pre></td>'); + } + echo('</tr>'.PHP_EOL); +} +echo(' </table> +<!-- Espace vide si le tableau est petit --> +<div class="spacer"></div>'); + +// **************************************************************************** +// FIN DIV PRINCIPALE +// **************************************************************************** +echo('</main>'.PHP_EOL); + +?>
\ No newline at end of file diff --git a/Templates/admin.php b/Templates/admin.php new file mode 100644 index 0000000..fb4eeb0 --- /dev/null +++ b/Templates/admin.php @@ -0,0 +1,45 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour administrer le site web # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); +// Vérification si l'utilisateur est admin et connecté sinon: raise 404. +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + || $_SESSION["loggedIn"] == false + || $_SESSION["userStatus"] != 0 + ) { + http_response_code(404); + die(); +} else { + // Définition de la variable src de la session avec le nom du fichier. + $_SESSION["src"] = basename(__FILE__, ".php"); +} + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_form_admin.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> + <script>show('mainAdmin', 'section', 'secAdminJobs', 'show_flex')</script> +</body> +</html>
\ No newline at end of file diff --git a/Views/autoLogin.php b/Templates/autoLogin.php index f52f660..9395e13 100644 --- a/Views/autoLogin.php +++ b/Templates/autoLogin.php @@ -1,18 +1,26 @@ <?php -// **************************************************************************** -// Description: Renvoie vers le wrapper pour connection auto-login -// **************************************************************************** + +// ############################################################################ +// # # +// # Description: Renvoie vers le wrapper pour connection auto-login # +// # # +// ############################################################################ + // Démarrage de la session. session_start(); + // Si la variable de session loggedin existe et que l'utilsiateur est connecté // ou que le cookie de connection n'est pas présent: raise 404 if ($_SESSION["loggedIn"] == true || !isset($_COOKIE["autoLogin"])) { http_response_code(404); die(); } + // Définition de la variable src de la session avec le nom du fichier. $_SESSION["src"] = basename(__FILE__, ".php"); + // Redirection vers le wrapper. -header("Location: /Wrapper/wrapper.php"); +header("Location: /Core/wrapper.php"); die(); + ?>
\ No newline at end of file diff --git a/Templates/login.php b/Templates/login.php new file mode 100644 index 0000000..5c8f71a --- /dev/null +++ b/Templates/login.php @@ -0,0 +1,36 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour se connecter # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo("<title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_form_login.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> +</body> +</html>
\ No newline at end of file diff --git a/Templates/logout.php b/Templates/logout.php new file mode 100644 index 0000000..f7f9d85 --- /dev/null +++ b/Templates/logout.php @@ -0,0 +1,24 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page qui renvoi vers le wrapper pour se déconnecter # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Si déja non connecté: raise 404 +if (!isset($_SESSION["loggedIn"]) || $_SESSION["loggedIn"] != true) { + http_response_code(404); + die(); +} + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); + +// Redirection vers le wrapper. +header("Location: /Core/wrapper.php"); +die(); +?>
\ No newline at end of file diff --git a/Templates/message.php b/Templates/message.php new file mode 100644 index 0000000..31f2a9b --- /dev/null +++ b/Templates/message.php @@ -0,0 +1,41 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page qui affiche un message et optionnellement renvoi # +// # vers l'index # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Si pas de message (variable messageNumber de la session): raise 404. +if (!isset($_SESSION["message"])) { + http_response_code(404); + die(); +} + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_message.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> +</body> +</html> +<?php unset($_SESSION["messageNumber"]); ?> diff --git a/Templates/mission.php b/Templates/mission.php new file mode 100644 index 0000000..59ab34a --- /dev/null +++ b/Templates/mission.php @@ -0,0 +1,47 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour enregistrer une mission # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Vérification si connecté et si a le statut utilisateur sinon: raise 404 +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + || $_SESSION["loggedIn"] == false + || $_SESSION["userStatus"] != 2 +) { + $messageNumber = 9; + $_SESSION["messageNumber"] = $messageNumber; + header("Location: /Templates/message.php"); + die(); +} + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_form_mission.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> +</body> +</html>
\ No newline at end of file diff --git a/Templates/myMission.php b/Templates/myMission.php new file mode 100644 index 0000000..20d8bb7 --- /dev/null +++ b/Templates/myMission.php @@ -0,0 +1,48 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour voir ses missions # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Si n'est pas connecté ou n'est pas consultant: raise 404. +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + || $_SESSION["loggedIn"] == false + || ($_SESSION["userStatus"] != 1 + && $_SESSION["userStatus"] != 2 + ) +) { + http_response_code(404); + die(); +} + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_table_myMission.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> + <script>show('mainMyMission', 'table', 'pendingTable', 'show_table')</script> +</body> +</html>
\ No newline at end of file diff --git a/Templates/register.php b/Templates/register.php new file mode 100644 index 0000000..86a60b0 --- /dev/null +++ b/Templates/register.php @@ -0,0 +1,36 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour s'inscrire # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); + +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_form_register.php")?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php");?> + <script src="/Statics/Js/main.js"></script> +</body> +</html>
\ No newline at end of file diff --git a/Templates/userInfo.php b/Templates/userInfo.php new file mode 100644 index 0000000..50b4928 --- /dev/null +++ b/Templates/userInfo.php @@ -0,0 +1,45 @@ +<?php + +// ############################################################################ +// # # +// # Description: Page pour modifier les informations de l'utilisateur # +// # # +// ############################################################################ + +// Démarrage de la session. +session_start(); + +if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) + || $_SESSION["loggedIn"] == false + || ($_SESSION["userStatus"] != 1 + && $_SESSION["userStatus"] != 2 + ) +) { + http_response_code(404); + die(); +} + +// Définition de la variable src de la session avec le nom du fichier. +$_SESSION["src"] = basename(__FILE__, ".php"); +// Utilisation de "dirname" pour réaliser des imports en chemin absolue. +// Import du dossier des textes en fonction de +// la langue sélectionnée dans la variable lang de la session. +?> +<!-- Déclaration du type de document --> +<!DOCTYPE html> +<!-- Balise racine d'un document HTML --> +<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/".$_SESSION["lang"]."/title.php"); ?> +<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_navbar.php"); ?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_form_userInfo.php")?> +<?php require_once(dirname( __FILE__ )."./Includes/incl_global_footer.php");?> + <script src="/Statics/Js/main.js"></script> +</body> +</html>
\ No newline at end of file diff --git a/Views/Includes/en/title.php b/Views/Includes/en/title.php deleted file mode 100644 index d08f444..0000000 --- a/Views/Includes/en/title.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -// **************************************************************************** -// Description: Titre des pages -// **************************************************************************** -$title = [ - "index" => "AlphaJob - Index", - "login" => "AlphaJob - Login Page", - "message" => "AlphaJob - Message", - "mission" => "AlphaJob - Register a mission", - "myMission" => "AlphaJob - My missions", - "register" => "AlphaJob - Register an user", - "userInfo" => "AlphaJob - My user information", - "admin" => "AlphaJob - Administration of alphajob" -]; -?>
\ No newline at end of file diff --git a/Views/Includes/fr/title.php b/Views/Includes/fr/title.php deleted file mode 100644 index 25b6dd0..0000000 --- a/Views/Includes/fr/title.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -// **************************************************************************** -// Description: Titre des pages -// **************************************************************************** -$title = [ - "index" => "AlphaJob - Index", - "login" => "AlphaJob - Connection", - "message" => "AlphaJob - Message", - "mission" => "AlphaJob - Enregistrer une mission", - "myMission" => "AlphaJob - Mes missions", - "register" => "AlphaJob - Inscription", - "userInfo" => "AlphaJob - Mes informations", - "admin" => "AlphaJob - Administration d'alphajob" -]; -?>
\ No newline at end of file diff --git a/Views/Includes/incl_form_admin.php b/Views/Includes/incl_form_admin.php deleted file mode 100644 index 6176bc4..0000000 --- a/Views/Includes/incl_form_admin.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php -// **************************************************************************** -// Description: Récupération de tous les utilisateurs -// pour choix d'une suppression par son ID de table. -// **************************************************************************** -// Import du texte en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -// Import des en-tête des tables. -require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/table.php"); -// Import des metodes de la base de donnée pour les recherches. -require_once(dirname( __FILE__ )."/../../Database/meth_dbadmin.php"); -require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); - -// Instanciation de la bdd avec les méthodes de recherche. -$dbadmin = new DbAdmin; -$dbsearch = new DbSearch; -// Form pour ajout d'une catégorie d'emploi -echo(' <!-- Separateur --> - <div class="separator"></div> - <!-- Form pour ajout d une catégorie d emploi --> - <div id="admin"> - <h2>'.$text[basename(__FILE__, ".php")]["h2Job"].'</h2> - <form class="flex-center" action="../../Wrapper/wrapper.php" method="post"> - <label class="width-auto"> - <i class="fas fa-briefcase"></i> - <input type="text" name="addCategoryNameEn" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["formJobAddEn"].'" required> - <i class="fas fa-briefcase" style="margin-left: 5%;"></i> - <input type="text" name="addCategoryNameFr" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["formJobAddFr"].'" required> - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitJobAdd"].'"> - </form> - <!-- Form pour suppression d une catégorie d emploi --> - <form class="flex-center" action="/../Wrapper/wrapper.php" method="post"> - <label> - <select name="delCategoryId" required> - <option value="" selected>'.$text[basename(__FILE__, ".php")]["selJobDel"].'</option>'.PHP_EOL); - -$result = $dbsearch->get_job_category_all(); -for ($i = 0; $i < count($result); $i++){ - echo(' <option value="'.$result[$i]["jobCategoryId"].'">'.$result[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); -} - -echo(' </select> - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitJobDel"].'"> - </form>'.PHP_EOL); - -// Form pour la suppression et envoie au wrappeur. -echo(' <!-- Form pour choix de la suppression --> - <h2>'.$text[basename(__FILE__, ".php")]["h2Del"].'</h2> - <form class="flex-center" action="../../Wrapper/wrapper.php" method="post"> - <label class="width-auto"> - <i class="fas fa-trash-alt"></i> - <input type="text" name="userId" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["formDel"].'" required> - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submitDel"].'"> - </form>'.PHP_EOL); - -// Récupération de tous les utilisateurs. -$result = $dbadmin->get_all_users_account(); -// Affichage de la table. -echo(" <!-- Tableau des utilisateurs--> - <table> - <!-- En-tête --> - <tr>".PHP_EOL); -// Affichage des en-tête de colonne. -foreach($header["adminDel"] as $header) { - echo(" <th>".$header."</th>".PHP_EOL); -} -echo(" </tr>".PHP_EOL); -// Affichage du résultat de la recherche. -foreach ($result as $rows) { - echo(" <!-- Utilisateurs --> - <tr>".PHP_EOL); - foreach ($rows as $key => $value) { - switch ($key) { - case "userStatus": - switch ($value) { - case 0: - echo(" <td><pre>Admin<pre></td>".PHP_EOL); - break; - case 1: - echo(" <td><pre>Pro<pre></td>".PHP_EOL); - break; - case 2: - echo(" <td><pre>Client<pre></td>".PHP_EOL); - break; - } - break; - default: - echo(" <td><pre>".$value."</pre></td>".PHP_EOL); - break; - } - } - echo(" </tr>".PHP_EOL); -} -echo(' </table> - <!-- Espace vide si le tableau est petit --> - <div class="spacer"></div> - </div>'.PHP_EOL); - -?>
\ No newline at end of file diff --git a/Views/Includes/incl_form_login.php b/Views/Includes/incl_form_login.php deleted file mode 100644 index 5f76160..0000000 --- a/Views/Includes/incl_form_login.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -// **************************************************************************** -// Description: Formulaire du login -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo(' <div class="separator"></div> - <div id="login"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form action="/../Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-envelope-square"></i> - <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" required> - </label> - <label> - <i class="fas fa-lock"></i> - <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" required> - </label> - <label class="flex-center"> - <input type="checkbox" name="rememberMe" id="rememberMe"> - '.$text[basename(__FILE__, ".php")]["rememberMe"].' - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div>'.PHP_EOL) -?>
\ No newline at end of file diff --git a/Views/Includes/incl_form_mission.php b/Views/Includes/incl_form_mission.php deleted file mode 100644 index 345dca2..0000000 --- a/Views/Includes/incl_form_mission.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -// **************************************************************************** -// Description: Formulaire d'enregistrement d'une mission -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -// Import des méthodes de la base de donnée pour les recherches. -require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); -if (isset($_SESSION["missionInitiate"]) - && count($_SESSION["missionInitiate"]) > 0 -) { - echo(' <div class="separator"></div> - <div id="mission"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form id="missionForm" action="/../Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-edit"></i> - <input type="text" name="missionSubject" placeholder="'.$text[basename(__FILE__, ".php")]["subject"].'" maxlength="128" required> - </label> - <select name="missionJob"> - <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); - for ($i = 0; $i < count($_SESSION["missionInitiate"]["proJobs"]); $i++) { - echo(' <option value="'.$_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryId"].'">'.$_SESSION["missionInitiate"]["proJobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); - } - echo(' </select> - <input type="hidden" name="missionProId" value="'.$_SESSION["missionInitiate"]["proId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div>'.PHP_EOL); - unset($_SESSION["missionInitiate"]); - -} elseif (isset($_SESSION["missionCompleted"]) - && count($_SESSION["missionCompleted"]) > 0 -) { - echo('<div class="separator"></div> - <div id="mission"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form id="missionForm" action="/../Wrapper/wrapper.php" method="post"> - <label class="flex-start"> - <i class="far fa-star"></i> - <select name="note" required> - <option value="" selected disabled hidden>Note</option> - <option value="5">5</option> - <option value="4">4</option> - <option value="3">3</option> - <option value="2">2</option> - <option value="1">1</option> - <option value="0">0</option> - </select> - </label> - <label> - <i class="far fa-comment-alt"></i> - <textarea name="review" placeholder="'.$text[basename(__FILE__, ".php")]["review"].'" required></textarea> - </label>'); - echo(' <input type="hidden" name="missionCompletedId" value="'.$_SESSION["missionCompleted"]["missionId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div>'.PHP_EOL); - unset($_SESSION["missionCompleted"]); - -} else { - header("Location: /Views/myMission.php"); - die(); -} -?>
\ No newline at end of file diff --git a/Views/Includes/incl_form_register.php b/Views/Includes/incl_form_register.php deleted file mode 100644 index b98365b..0000000 --- a/Views/Includes/incl_form_register.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -// **************************************************************************** -// Description: Formulaire pour une inscription -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo(' <!-- Separateur --> - <div class="separator"></div> - <!-- Formulaire d\'inscription --> - <div id="register"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form action="/../Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-envelope-square"></i> - <input type="email" name="email" id="email" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["email"].'" maxlength="128" required> - </label> - <label> - <i class="fas fa-lock"></i> - <input type="password" name="password" id="password" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["password"].'" maxlength="128" required> - </label> - <label class="info flex-center">'.$text[basename(__FILE__, ".php")]["notice"].'</label> - <label for="isAdmin" class="flex-center"><input type="radio" id="isAdmin" name="userStatus" value="0">'.$text[basename(__FILE__, ".php")]["isAdmin"].'</label> - <label for="isPro" class="flex-center"><input type="radio" id="isPro" name="userStatus" value="1">'.$text[basename(__FILE__, ".php")]["isPro"].'</label> - <label for="isClient" class="flex-center"><input type="radio" id="isClient" name="userStatus" value="2">'.$text[basename(__FILE__, ".php")]["isClient"].'</label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div>'.PHP_EOL); -?>
\ No newline at end of file diff --git a/Views/Includes/incl_form_userInfo.php b/Views/Includes/incl_form_userInfo.php deleted file mode 100644 index c79e687..0000000 --- a/Views/Includes/incl_form_userInfo.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php -// **************************************************************************** -// Description: Formulaire pour modifier les informations de l'utilisateur -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -// Import des méthodes de la base de donnée pour les recherches. -require_once(dirname( __FILE__ )."/../../Database/meth_dbsearch.php"); -// Instanciation de la bdd avec les méthodes de recherche. -$dbsearch = new DbSearch; -// Recherches des informations avec l'id de l'utilisateur actuellement connecté. -$info = $dbsearch->get_user_info_by_id($_SESSION["userId"]); -if (!$info) { - $info = [ - ["lastname" => "", - "firstname" => "", - "phoneNumber" => "", - "adress" => "", - "zipCode" => "", - "city" => "", - "degree" => "", - "capability" => "", - "description" => ""] - ]; -} -echo(' <!-- Separateur --> - <div class="separator"></div> - <!-- Modification des infos de l\'utilisateur --> - <div id="userInfo"> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form action="/../Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-users"></i> - <input type="text" name="lastname" id="lastname" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["lastname"].'" value="'.$info[0]["lastname"].'" required> - </label> - <label> - <i class="fas fa-user"></i> - <input type="text" name="firstname" id="firstname" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["firstname"].'" value="'.$info[0]["firstname"].'" required> - </label> - <label> - <i class="fas fa-mobile-alt"></i> - <input type="text" name="phoneNumber" id="phoneNumber" maxlength="10" placeholder="'.$text[basename(__FILE__, ".php")]["phoneNumber"].'" value="'.$info[0]["phoneNumber"].'" required> - </label> - <label> - <i class="fas fa-home"></i> - <input type="text" name="adress" id="adress" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["adress"].'" value="'.$info[0]["adress"].'" required> - </label> - <label> - <i class="fas fa-map-marker-alt"></i> - <input type="text" name="zipCode" id="zipCode" maxlength="6" placeholder="'.$text[basename(__FILE__, ".php")]["zipCode"].'" value="'.$info[0]["zipCode"].'" required> - </label> - <label> - <i class="fas fa-city"></i> - <input type="text" name="city" id="city" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["city"].'" value="'.$info[0]["city"].'" required> - </label>'.PHP_EOL); -// TODO : Commenter -if ($_SESSION["userStatus"] == 1) { - $allJobs = $dbsearch->get_job_category_all(); - $proJobs = $dbsearch->get_pro_job_category($_SESSION["userId"]); - echo(' <label> - <i class="fas fa-wrench"></i> - Add a job:'.PHP_EOL); - // Select - echo(' <select id="jobsSel"> - <option value="" selected>'.$text[basename(__FILE__, ".php")]["jobsSel"].'</option>'.PHP_EOL); - for ($i = 0; $i < count($allJobs); $i++) { - echo(' <option value="'.$allJobs[$i]["jobCategoryId"].'">'.$allJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</option>'.PHP_EOL); - } - echo(' </select> - <button type="button" onclick="add()">'.$text[basename(__FILE__, ".php")]["jobsAdd"].'</button> - </label>'.PHP_EOL); - // Mes jobs - echo(' Mes jobs - <ul id="jobsList">'.PHP_EOL); - for ($i = 0; $i < count($proJobs); $i++) { - echo(' <li>'.$proJobs[$i]["jobCategoryName".ucwords($_SESSION["lang"])].'</li>'.PHP_EOL); - } - echo(' </ul> - <input type="hidden" name="jobs" id="jobs" value="">'.PHP_EOL); - // Keep going - echo(' <label> - <i class="fas fa-user-graduate"></i> - <input type="text" name="degree" id="degree" maxlength="128" placeholder="'.$text[basename(__FILE__, ".php")]["degree"].'"value="'.$info[0]["degree"].'" required> - </label> - <label> - <i class="fas fa-cogs"></i> - <textarea name="capability" id="capability" placeholder="'.$text[basename(__FILE__, ".php")]["capability"].'" cols="30" rows="2" required>'.$info[0]["capability"].'</textarea> - </label> - <label> - <i class="fas fa-file-signature"></i> - <textarea name="description" id="description" placeholder="'.$text[basename(__FILE__, ".php")]["description"].'" cols="30" rows="2" required>'.$info[0]["description"].'</textarea> - </label>'.PHP_EOL); -} -echo(' <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form> - </div> - <script src="/Statics/Js/userinfo.js"></script> - <script>init()</script>') -?>
\ No newline at end of file diff --git a/Views/Includes/incl_global_footer.php b/Views/Includes/incl_global_footer.php deleted file mode 100644 index 6aa4014..0000000 --- a/Views/Includes/incl_global_footer.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -// **************************************************************************** -// Description: Pied de page -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo(' <!-- Separateur --> - <div class="separator"></div> - <!-- Pied de page --> - <div id="footer"> - <p>'.$text[basename(__FILE__, ".php")]["main"].'</p> - </div>'.PHP_EOL) -?>
\ No newline at end of file diff --git a/Views/Includes/incl_global_header.php b/Views/Includes/incl_global_header.php deleted file mode 100644 index 060340c..0000000 --- a/Views/Includes/incl_global_header.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php -// **************************************************************************** -// Description: Header commmun à toutes les pages -// **************************************************************************** -echo(' <!-- Table d\'encodage --> - <meta charset="UTF-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <link href="/Statics/Css/main.css" rel="stylesheet"> - <!-- https://fontawesome.com/v5.15/how-to-use/on-the-web/setup/hosting-font-awesome-yourself --> - <link href="/Statics/Css/Fontsawesome/all.css" rel="stylesheet"> - <!-- https://semantic-ui.com/elements/flag.html --> - <link href="/Statics/Css/Flags/flag.css" rel="stylesheet"> -'); -?>
\ No newline at end of file diff --git a/Views/Includes/incl_global_message.php b/Views/Includes/incl_global_message.php deleted file mode 100644 index 304e906..0000000 --- a/Views/Includes/incl_global_message.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -// **************************************************************************** -// Description: Partie principale de la page des messages -// **************************************************************************** -// Import des différents messages possibles. -require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/message.php"); -$name = $_SESSION["message"][0]; -$status = $_SESSION["message"][1]; -echo('<div class="separator"></div>'); -echo('<div id="message"><h2>'.$messageText[$name][$status]["title"].'</h3>'); -if ($messageText[$name][$status]["success"]) { - echo('<h3 class="success">'.$success.'</h3>'); -} else { - echo('<h3 class="error">'.$error.'</h3>'); -} -echo("<p>".$messageText[$name][$status]["info"]."</p>"); -echo('<p id="redirect" class="info">'.$redirect.'</p></div>'); -echo('<script src="/Statics/Js/message.js"></script>'); -if ($messageText[$name][$status]["toSrc"]) { - if ($_SESSION["src"] !== "index") { - $dest = "Views/".$_SESSION["src"]; - } else { - $dest = "index"; - } -} else { - $dest = "index"; -} -if ($messageText[$name][$status]["timer"]) { - echo('<script>start_timer("'.$dest.'");</script>'); -} else { - echo('<script>redirect("'.$dest.'")</script>'); -} -?>
\ No newline at end of file diff --git a/Views/Includes/incl_global_navbar.php b/Views/Includes/incl_global_navbar.php deleted file mode 100644 index 664d6ff..0000000 --- a/Views/Includes/incl_global_navbar.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -// **************************************************************************** -// Description: La navbar -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo(' <!-- Navbar --> - <div id="navbar"> - <!-- Titre --> - <a class="titleNavbar" href="/"><h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2></a> - <!-- Espace vide --> - <div class=spacer></div> - <!-- Liste de lien pour la navigation --> - <ul class="userManager"> - <a href="/index.php#separator2"><li><i class="fas fa-search"></i> '.$text[basename(__FILE__, ".php")]["btnSearch"].'</li></a>'.PHP_EOL); -// Affichage des éléments en fonction de si l'utilisateur est connecté ou non et de ses fonctions. -if (isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) - && $_SESSION["loggedIn"] == "1" -) { - // Switch -> https://www.php.net/manual/fr/control-structures.switch.php - // https://stackoverflow.com/questions/6330114/do-you-need-break-in-switch-when-return-is-used - switch ($_SESSION["userStatus"]) { - case 0: - $status = 'Admin'; - echo(' <a href="/Views/admin.php"><li><i class="fas fa-cog"></i> '.$text[basename(__FILE__, ".php")]["btnAdmin"].'</li></a>'.PHP_EOL); - break; - case 1: - $status = 'Pro'; - echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); - break; - case 2: - $status = 'Client'; - echo(' <a href="/Views/myMission.php"><li><i class="fas fa-tasks"></i> '.$text[basename(__FILE__, ".php")]["btnMyMission"].'</li></a>'.PHP_EOL); - break; - } - echo(' <a href="/Views/userInfo.php"><li><i class="fas fa-user"></i> '.$text[basename(__FILE__, ".php")]["btnInfos"].'</li></a> - <a href="/Views/logout.php"><li><i class="fas fa-sign-out-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogout"].'</li></a>'.PHP_EOL); - - echo('<li>'.$_SESSION["email"].'<br>'.$status.'</li>'.PHP_EOL); -} else { - echo(' <a href="/Views/login.php"><li><i class="fas fa-sign-in-alt"></i> '.$text[basename(__FILE__, ".php")]["btnLogin"].'</li></a> - <a href="/Views/register.php"><li><i class="fas fa-user-plus"></i> '.$text[basename(__FILE__, ".php")]["btnRegister"].'</li></a>'.PHP_EOL); -} -echo(' </ul>'.PHP_EOL); -// Affichage du drapeau de la langue actuellement sélectionnée. -$flags = [ - "en" => "gb uk", - "fr" => "fr" -]; -echo(' <!-- Choix de la langue --> - <form action="/../Wrapper/wrapper.php" method="post" id="langForm" class="language"> - <label> - <i class="'.$flags[$_SESSION["lang"]].' flag"></i>'.$text[basename(__FILE__, ".php")]["lang"].' - <select name="langSel" id="langSel" required> - <option value="" selected>'.$text[basename(__FILE__, ".php")]["btnLang"].'</option> - <option value="en">English</option> - <option value="fr">Français</option> - </select> - </label> - </form> - </div>'.PHP_EOL); -?>
\ No newline at end of file diff --git a/Views/Includes/incl_index_search.php b/Views/Includes/incl_index_search.php deleted file mode 100644 index ac107b7..0000000 --- a/Views/Includes/incl_index_search.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php -// **************************************************************************** -// Description: Partie recherche de l'index. -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -// Import des en-têtes des tables. -require_once(dirname( __FILE__ )."/".$_SESSION["lang"]."/table.php"); -// Separateur. -echo(' <!-- Separateur --> - <div id="separator2" class="separator"></div> - <div id="search">'.PHP_EOL); -// Form pour la recherche par nom et envoi au wrappeur. -echo(' <!-- Form de recherche --> - <h2>'.$text[basename(__FILE__, ".php")]["h2"].'</h2> - <form action="/Wrapper/wrapper.php" method="post"> - <label> - <i class="fas fa-search"></i> - <input type="search" name="search" id="searchBar"placeholder="'.$text[basename(__FILE__, ".php")]["searchBar"].'" required> - </label> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["submit"].'"> - </form>'.PHP_EOL); -// Si l'index est chargé avec des données dans la variable "search" de la session, -// c'est qu'une recherche à été effectuée, on affiche alors le contenu de cette recherche en tableau. -if (isset($_SESSION["search"])) { - echo("<table>"); - // Si la variable isResearch est vrai, c'est une rechreche. - if ($_SESSION["search"]["isResearch"]) { - echo("<tr>"); - for ($i = 0; $i < count($header["search"]); $i++) { - echo("<th><pre>".$header["search"][$i]."</pre></th>"); - } - echo("</tr>"); - foreach ($_SESSION["search"]["result"] as $result) { - echo("<tr>"); - echo("<td><pre>".$result["lastname"]."</pre></td>"); - echo("<td><pre>".$result["firstname"]."</pre></td>"); - // jobs - if (count($result["jobs"]) > 0) { - $jobsName = array(); - for ($i = 0; $i < count($result["jobs"]); $i++) { - array_push($jobsName, $result["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); - } - echo("<td><pre>".join(", ", $jobsName)."</pre></td>"); - } else { - echo('<td>N/A</td>'); - } - echo("<td><pre>".$result["capability"]."</pre></td>"); - echo("<td><pre>".$result["numberOfMissions"]."</pre></td>"); - echo("<td><pre>".$result["note"]."</pre></td>"); - // I'm a star !! - if ($result["star"]) { - echo('<td>'); - $missingStar = 5 - $result["star"]; - for ($i = 0; $i < $result["star"]; $i++) { - echo('<i class="fa fa-star star checked"></i>'); - } - if ($missingStar) { - for ($i = 0; $i < $missingStar; $i++) { - echo('<i class="fa fa-star star unchecked"></i>'); - } - } - echo("</td>"); - } else { - echo('<td>N/A</td>'); - } - // Si c'est une recherche on ajoute le bouton plus d'info, - // pour plus d'info avec une recherche par Id. - echo('<td class="noBorder" > - <form action="/Wrapper/wrapper.php" method="post"> - <input type="hidden" name="moreInfoProId" value="'.$result["userId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["moreInfo"].'"> - </form> - </td>'); - echo("</tr>"); - } - echo("</table>"); - // Sinon c'est un "Plus d'info". - } else { - echo("<tr>"); - for ($i = 0; $i < count($header["moreInfos"]); $i++) { - echo("<th><pre>".$header["moreInfos"][$i]."</pre></th>"); - } - echo('</tr> - <tr> - <td><pre>'.$_SESSION["search"]["result"][0]["lastname"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["firstname"].'</pre></td>'); - // jobs - if (count($_SESSION["search"]["result"][0]["jobs"]) > 0) { - $jobsName = array(); - for ($i = 0; $i < count($_SESSION["search"]["result"][0]["jobs"]); $i++) { - array_push($jobsName, $_SESSION["search"]["result"][0]["jobs"][$i]["jobCategoryName".ucwords($_SESSION["lang"])]); - } - echo("<td><pre>".join(", ", $jobsName)."</pre></td>"); - } else { - echo('<td>N/A</td>'); - } - echo(' <td><pre>'.$_SESSION["search"]["result"][0]["degree"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["capability"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["description"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["phoneNumber"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["adress"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["zipCode"].'</pre></td> - <td><pre>'.$_SESSION["search"]["result"][0]["city"].'</pre></td> - </tr> - </table> - <form action="/Wrapper/wrapper.php" method="post"> - <input type="hidden" name="mandateProId" value="'.$_SESSION["search"]["result"][0]["userId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["mandate"].'"> - </form>'); - } -} -echo(' <!-- Espace vide si le tableau est petit --> - <div class="spacer"></div> - </div>'); -// On supprime la variable de recherche si elle existe. -unset($_SESSION["search"]); -?>
\ No newline at end of file diff --git a/Views/Includes/incl_index_slideshow.php b/Views/Includes/incl_index_slideshow.php deleted file mode 100644 index 1a7790e..0000000 --- a/Views/Includes/incl_index_slideshow.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -// **************************************************************************** -// Description: Partie slide show de l'index -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -echo(' <!-- Separateur --> - <div id="separator1" class="separator"></div> - <!-- Slideshow --> - <div id="slides"> - <p id="slide_0" class="show_slide">'.$text[basename(__FILE__, ".php")]["slide1"].'</p> - <p id="slide_1">'.$text[basename(__FILE__, ".php")]["slide2"].'</p> - <p id="slide_2">'.$text[basename(__FILE__, ".php")]["slide3"].'</p> - <!-- Indicateur de slide actuellement en cour --> - <div id="slideDots"> - <i id="slideDot_0" class="fas fa-circle slideSelected"></i> - <i id="slideDot_1" class="fas fa-circle"></i> - <i id="slideDot_2" class="fas fa-circle"></i> - </div> - </div>'.PHP_EOL); -?>
\ No newline at end of file diff --git a/Views/Includes/incl_table_myMission.php b/Views/Includes/incl_table_myMission.php deleted file mode 100644 index de071b1..0000000 --- a/Views/Includes/incl_table_myMission.php +++ /dev/null @@ -1,158 +0,0 @@ -<?php -// **************************************************************************** -// Description: Tableau correspondant aux missions effectuées par l'utilisateur. -// **************************************************************************** -// Import des textes en fonction de la langue définie dans la variable "lang" de la session. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/text.php"); -// Import des en-tête des tables. -require_once(dirname(__FILE__)."/".$_SESSION["lang"]."/table.php"); -// Import des metodes de la base de donnée pour les recherches. -require_once(dirname(__FILE__)."/../../Database/meth_dbsearch.php"); -require_once(dirname(__FILE__)."/../../Database/meth_dbmission.php"); -// Instanciation de la bdd avec les méthodes de recherche. -$dbsearch = new DbSearch; -$dbmission = new DbMission; - -// TODO: commenter -// Recherches des missions avec l'id de l'utilisateur actuellement connecté. -switch ($_SESSION["userStatus"]) { - case 1: - $result = $dbmission->get_mission_by_pro_id($_SESSION["userId"]); - for ($i = 0; $i < count($result); $i++) { - $result[$i]["jobCategoryId"] = $dbsearch->get_job_category_by_id($result[$i]["jobCategoryId"]); - } - break; - case 2: - $result = $dbmission->get_mission_by_client_id($_SESSION["userId"]); - for ($i = 0; $i < count($result); $i++) { - $result[$i]["jobCategoryId"] = $dbsearch->get_job_category_by_id($result[$i]["jobCategoryId"]); - } - break; - default: - break; -} - -$missionStatus = [ - "pending" => [], - "ongoing" => [], - "completed" => [] -]; - -for ($i = 0; $i < count($result); $i++) { - if (!$result[$i]["acceptedByPro"] - ) { - array_push($missionStatus["pending"], $result[$i]); - } elseif (!$result[$i]["validatedByPro"] - || !$result[$i]["validatedByClient"] - ) { - array_push($missionStatus["ongoing"], $result[$i]); - } else { - array_push($missionStatus["completed"], $result[$i]); - } -} - -echo(' <!-- Separateur --> - <div class="separator"></div> - <!-- Mes missions --> - <div id="myMission"> - <div id="missionButtons"> - <button onclick="show(\'pendingTable\')"><h2>'.$text[basename(__FILE__, ".php")]["pendingMission"].'</h2></button> - <button onclick="show(\'ongoingTable\')"><h2>'.$text[basename(__FILE__, ".php")]["ongoingMission"].'</h2></button> - <button onclick="show(\'completedTable\')"><h2>'.$text[basename(__FILE__, ".php")]["completedMission"].'</h2></button> - </div>'.PHP_EOL); - -// tableau 3 pending -echo(' <table id="pendingTable"> - <!-- En-tête --> - <tr>'.PHP_EOL); -foreach($header["pendingMissions"] as $columnHeader) { - echo(" <th>".$columnHeader."</th>".PHP_EOL); -} -echo(" </tr>".PHP_EOL); -foreach ($missionStatus["pending"] as $rows) { - echo(' <!-- Missions --> - <tr> - <td><pre>'.$rows["date"].'</pre></td> - <td><pre>'.$rows["lastname"].'</pre></td> - <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> - <td><pre>'.$rows["subject"].'</pre></td>'); - if ($_SESSION["userId"] == $rows["proId"]) { - echo(' <td class="noBorder" > - <form action="/Wrapper/wrapper.php" method="post"> - <input type="hidden" name="acceptedMissionId" value="'.$rows["missionId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["accept"].'"> - </form> - </td>'); - } - echo(' </tr>'.PHP_EOL); -} -echo(' </table>'); - -// tableau 4 ongoing -echo(' <table id="ongoingTable"> - <!-- En-tête --> - <tr>'.PHP_EOL); -foreach($header["ongoingMissions"] as $columnHeader) { - echo(" <th>".$columnHeader."</th>".PHP_EOL); -} -echo(" </tr>".PHP_EOL); -foreach ($missionStatus["ongoing"] as $rows) { - echo(' <!-- Missions --> - <tr> - <td><pre>'.$rows["acceptedByPro"].'</pre></td> - <td><pre>'.$rows["lastname"].'</pre></td> - <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> - <td><pre>'.$rows["subject"].'</pre></td> - <td><pre>'.$rows["validatedByClient"].'</pre></td> - <td><pre>'.$rows["validatedByPro"].'</pre></td>'); - if (!$rows["validatedByClient"] && $_SESSION["userStatus"] == 2 - || (!$rows["validatedByPro"] && $_SESSION["userStatus"] == 1) - ) { - echo(' <td class="noBorder" > - <form action="/Wrapper/wrapper.php" method="post"> - <input type="hidden" name="validatedMissionId" value="'.$rows["missionId"].'"> - <input type="submit" value="'.$text[basename(__FILE__, ".php")]["validate"].'"> - </form> - </td>'); - } - echo(' </tr>'.PHP_EOL); -} -echo(' </table>'); - -// tableau 5 completed -echo(' <table id="completedTable"> - <!-- En-tête --> - <tr>'.PHP_EOL); -foreach($header["completedMissions"] as $columnHeader) { - echo(" <th>".$columnHeader."</th>".PHP_EOL); -} -echo(" </tr>".PHP_EOL); -foreach ($missionStatus["completed"] as $rows) { - echo(' <!-- Missions --> - <tr> - <td><pre>'.$rows["date"].'</pre></td> - <td><pre>'.$rows["acceptedByPro"].'</pre></td> - <td><pre>'.$rows["validatedByClient"].'</pre></td> - <td><pre>'.$rows["validatedByPro"].'</pre></td> - <td><pre>'.$rows["lastname"].'</pre></td> - <td><pre>'.$rows["jobCategoryId"][0]["jobCategoryName".ucwords($_SESSION["lang"])].'</pre></td> - <td><pre>'.$rows["subject"].'</pre></td>'); - if ($rows["review"]) { - echo('<td><pre>'.$rows["review"].'</pre></td>'); - } else { - echo('<td><pre>N/A</pre></td>'); - } - if ($rows["note"]) { - echo('<td><pre>'.$rows["note"].'</pre></td>'); - } else { - echo('<td><pre>N/A</pre></td>'); - } - echo('</tr>'.PHP_EOL); -} -echo(' </table> -<!-- Espace vide si le tableau est petit --> -<div class="spacer"></div>'); - -// fin -echo(' </div>'.PHP_EOL); -?>
\ No newline at end of file diff --git a/Views/admin.php b/Views/admin.php deleted file mode 100644 index 67398fd..0000000 --- a/Views/admin.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour administrer le site web -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Vérification si l'utilisateur est admin et connecté sinon: raise 404. -if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) - || $_SESSION["loggedIn"] == false - || $_SESSION["userStatus"] != 0 - ) { - http_response_code(404); - die(); -} else { - // Définition de la variable src de la session avec le nom du fichier. - $_SESSION["src"] = basename(__FILE__, ".php"); -} -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_form_admin.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - </body> -</html>
\ No newline at end of file diff --git a/Views/login.php b/Views/login.php deleted file mode 100644 index 0bdeda3..0000000 --- a/Views/login.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour se connecter -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo("<title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_form_login.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - </body> -</html>
\ No newline at end of file diff --git a/Views/logout.php b/Views/logout.php deleted file mode 100644 index c493bd5..0000000 --- a/Views/logout.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page qui renvoi vers le wrapper pour se déconnecter -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Si déja non connecté: raise 404 -if (!isset($_SESSION["loggedIn"]) || $_SESSION["loggedIn"] != true) { - http_response_code(404); - die(); -} -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Redirection vers le wrapper. -header("Location: /Wrapper/wrapper.php"); -die(); -?>
\ No newline at end of file diff --git a/Views/message.php b/Views/message.php deleted file mode 100644 index b324f51..0000000 --- a/Views/message.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page qui affiche un message et optionnellement renvoi vers l'index -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Si pas de message (variable messageNumber de la session): raise 404. -if (!isset($_SESSION["message"])) { - http_response_code(404); - die(); -} -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_message.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - </body> -</html> -<?php unset($_SESSION["messageNumber"]); ?> diff --git a/Views/mission.php b/Views/mission.php deleted file mode 100644 index fde7289..0000000 --- a/Views/mission.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour enregistrer une mission -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Vérification si connecté et si a le statut utilisateur sinon: raise 404 -if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) - || $_SESSION["loggedIn"] == false - || $_SESSION["userStatus"] != 2 -) { - $messageNumber = 9; - $_SESSION["messageNumber"] = $messageNumber; - header("Location: /Views/message.php"); - die(); -} -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_form_mission.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - </body> -</html>
\ No newline at end of file diff --git a/Views/myMission.php b/Views/myMission.php deleted file mode 100644 index 2f575ba..0000000 --- a/Views/myMission.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour voir ses missions -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Si n'est pas connecté ou n'est pas consultant: raise 404. -if (!isset($_SESSION["loggedIn"], $_SESSION["userStatus"]) - || $_SESSION["loggedIn"] == false - || ($_SESSION["userStatus"] != 1 - && $_SESSION["userStatus"] != 2 - ) -) { - http_response_code(404); - die(); -} -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_table_myMission.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - <script src="/Statics/Js/myMission.js"></script> - <script>show('pendingTable')</script> - </body> -</html>
\ No newline at end of file diff --git a/Views/register.php b/Views/register.php deleted file mode 100644 index 5774615..0000000 --- a/Views/register.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour s'inscrire -// **************************************************************************** -// Démarrage de la session. -session_start(); -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_form_register.php")?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php");?> - <script src="/Statics/Js/main.js"></script> - </body> -</html>
\ No newline at end of file diff --git a/Views/userInfo.php b/Views/userInfo.php deleted file mode 100644 index 0936590..0000000 --- a/Views/userInfo.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -// **************************************************************************** -// Description: Page pour modifier les informations de l'utilisateur -// **************************************************************************** -// Démarrage de la session. -session_start(); -if (!isset($_SESSION["loggedIn"]) - || $_SESSION["loggedIn"] == false -) { - http_response_code(404); - die(); -} -// Définition de la variable src de la session avec le nom du fichier. -$_SESSION["src"] = basename(__FILE__, ".php"); -// Utilisation de "dirname" pour réaliser des imports en chemin absolue. -// Import du dossier des textes en fonction de -// la langue sélectionnée dans la variable lang de la session. -?> -<!DOCTYPE html> -<?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/".$_SESSION["lang"]."/title.php"); ?> -<?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_navbar.php"); ?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_form_userInfo.php")?> -<?php require_once(dirname( __FILE__ )."/Includes/incl_global_footer.php");?> - <script src="/Statics/Js/main.js"></script> - </body> -</html>
\ No newline at end of file diff --git a/Wrapper/Functions/func_admin.php b/Wrapper/Functions/func_admin.php deleted file mode 100644 index 86a750f..0000000 --- a/Wrapper/Functions/func_admin.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php -// **************************************************************************** -// Description: Fonctions d'administration du site -// **************************************************************************** -function delete ($userId) { - $dbadmin = new DbAdmin; - $deleted = $dbadmin->user_del($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: /Views/message.php"); - die(); -} - -function job_category_add($jobCategoryNameEn, $jobCategoryNameFr) { - $dbadmin = new DbAdmin; - // https://www.w3schools.com/php/func_string_strtolower.asp - $added = $dbadmin->job_category_register( - ucwords(strtolower($jobCategoryNameEn)), - ucwords(strtolower($jobCategoryNameFr)) - ); - // 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: /Views/message.php"); - die(); -} - -function job_category_del($jobCategoryId) { - $dbadmin = new DbAdmin; - $deleted = $dbadmin->job_category_del($jobCategoryId); - // 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: /Views/message.php"); - die(); -} -?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_info.php b/Wrapper/Functions/func_info.php deleted file mode 100644 index ca97bc0..0000000 --- a/Wrapper/Functions/func_info.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -// **************************************************************************** -// Description: Fonction de modifications des informations de l'utilisateur par ID -// **************************************************************************** -function modify_user_info($userInfos, $userId, $userStatus) { - $dbuser = new DbUser; - $dbsearch = new DbSearch; - switch ($userStatus) { - case 1: - $isPro = true; - break; - default: - $isPro = false; - break; - } - if ($isPro) { - $userJobs = $dbsearch->get_pro_job_category($userId); - $userJobsId = []; - for ($i = 0; $i < count($userJobs); $i++) { - array_push($userJobsId, $userJobs[$i]["jobCategoryId"]); - } - $dbuser->user_infos_update($userInfos, $userId, $isPro, $userJobsId); - } else { - $dbuser->user_infos_update($userInfos, $userId, $isPro); - } - // Redirection vers message avec l'index du message à afficher. - $message = ["infosUpdate", "success"]; - $_SESSION["message"] = $message; - header("Location: /Views/message.php"); - die(); -} -?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_language.php b/Wrapper/Functions/func_language.php deleted file mode 100644 index ae54da0..0000000 --- a/Wrapper/Functions/func_language.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -// **************************************************************************** -// Description: Modification de la variable lang de la session -// qui sert à définir quel dossier de language importer -// **************************************************************************** -function set_language($language) { - $_SESSION["lang"] = $language; - // Redirection vers la page actuelle avec la langue à affiche. - if ($_SESSION["src"] == "index") { - header("Location: /".$_SESSION["src"].".php"); - } else { - header("Location: /Views/".$_SESSION["src"].".php"); - } - die(); -} -?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_register.php b/Wrapper/Functions/func_register.php deleted file mode 100644 index e6757e2..0000000 --- a/Wrapper/Functions/func_register.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -// **************************************************************************** -// Description: Fonction d'inscription d'un nouvel utilisateur -// **************************************************************************** -function register($email, $password, $userStatus) { - $dbuser = new DbUser; - $registered = $dbuser->user_register($email, - $password, - $userStatus - ); - // Sélection du message à afficher en fonction de la réussite de l'inscription. - if ($registered) { - $mission = ["userAdd", "success"]; - } else { - $mission = ["userAdd", "fail"]; - } - // Redirection vers message avec l'index du message à afficher. - $_SESSION["mission"] = $mission; - header("Location: /Views/message.php"); - die(); -} -?>
\ No newline at end of file diff --git a/Wrapper/Functions/func_sanitize.php b/Wrapper/Functions/func_sanitize.php deleted file mode 100644 index cd45c28..0000000 --- a/Wrapper/Functions/func_sanitize.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -// **************************************************************************** -// Description: Fonction simple pour nettoyer un peu la data -// **************************************************************************** -function sanitize($data) { - // Retrait des espaces en début et fin de la variable. - $trimmed = trim($data); - // Retrait des charactères HTML (XSS). - $htmlChars = htmlspecialchars($trimmed); - return $htmlChars; -} -?>
\ No newline at end of file @@ -1,51 +1,61 @@ <?php -// **************************************************************************** -// Description: Index, page d'accueil du site web -// **************************************************************************** -// + +// ############################################################################ +// # # +// # Description: Index, page d'accueil du site web # +// # # +// ############################################################################ + // Sites web utilisés pour le PHP: // https://www.php.net/manual/fr/ // https://stackoverflow.com/ // https://www.w3schools.com/php/default.asp -// // Toutes les recherches sont effectuées en anglais // sur mon instance SearX https://searx.debulois.fr -// + // Démarrage de la session. session_start(); + // Si n'était pas encore défini "loggedIn" et "lang" // on les définit avec une valeur par défaut. if (!isset($_SESSION["loggedIn"], $_SESSION["lang"])) { $_SESSION["loggedIn"] = false; $_SESSION["lang"] = "en"; } + // Définition de la variable src de la session avec le nom du fichier. $_SESSION["src"] = basename(__FILE__, ".php"); + // Si le cookie auto-login est présent et que l'utilisateur n'est pas connecté // alors on va tenter de le faire et on le redirige donc vers le wrapper. if (isset($_COOKIE["autoLogin"]) && $_SESSION["loggedIn"] == false) { - header("Location: /Views/autoLogin.php"); + header("Location: /Templates/autoLogin.php"); die(); } + // Utilisation de "dirname" pour réaliser des imports en chemin absolue. // Import du dossier des textes en fonction de // la langue sélectionnée dans la variable lang de la session. ?> +<!-- Déclaration du type de document --> <!DOCTYPE html> +<!-- Balise racine d'un document HTML --> <?php echo('<html lang="'.$_SESSION["lang"].'">'.PHP_EOL); ?> - <head> -<?php require_once(dirname( __FILE__ )."/Views/Includes/incl_global_header.php"); ?> -<?php require_once(dirname( __FILE__ )."/Views/Includes/".$_SESSION["lang"]."/title.php"); ?> +<!-- Balise contenant les metadata --> +<head> +<?php require_once(dirname( __FILE__ )."./Templates/Includes/incl_global_header.php"); ?> +<?php require_once(dirname( __FILE__ )."./Templates/Includes/".$_SESSION["lang"]."/title.php"); ?> <?php echo(" <title>".$title[basename(__FILE__, ".php")]."</title>".PHP_EOL); ?> - </head> - <body> -<?php require_once("./Views/Includes/incl_global_navbar.php"); ?> -<?php require_once("./Views/Includes/incl_index_slideshow.php"); ?> -<?php require_once("./Views/Includes/incl_index_search.php");?> -<?php require_once("./Views/Includes/incl_global_footer.php"); ?> - <script src="/Statics/Js/main.js"></script> - <script src="/Statics/Js/index.js"></script> - <!-- Activation du slider --> - <script>slideshow_start();</script> - </body> +</head> +<!-- Balise principale contenant le corps du document HTML --> +<body> +<?php require_once("./Templates/Includes/incl_global_navbar.php"); ?> +<?php require_once("./Templates/Includes/incl_index_slideshow.php"); ?> +<?php require_once("./Templates/Includes/incl_index_search.php");?> +<?php require_once("./Templates/Includes/incl_global_footer.php"); ?> + <script src="/Statics/Js/main.js"></script> + <script src="/Statics/Js/index.js"></script> + <!-- Activation du slider --> + <script>slideshow_start();</script> +</body> </html>
\ No newline at end of file |
