diff options
Diffstat (limited to 'Core/Functions')
| -rw-r--r-- | Core/Functions/func_admin.php | 81 | ||||
| -rw-r--r-- | Core/Functions/func_info.php | 41 | ||||
| -rw-r--r-- | Core/Functions/func_language.php | 22 | ||||
| -rw-r--r-- | Core/Functions/func_login.php | 78 | ||||
| -rw-r--r-- | Core/Functions/func_logout.php | 40 | ||||
| -rw-r--r-- | Core/Functions/func_mission.php | 54 | ||||
| -rw-r--r-- | Core/Functions/func_myMission.php | 58 | ||||
| -rw-r--r-- | Core/Functions/func_register.php | 30 | ||||
| -rw-r--r-- | Core/Functions/func_sanitize.php | 17 | ||||
| -rw-r--r-- | Core/Functions/func_search.php | 81 |
10 files changed, 502 insertions, 0 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/Core/Functions/func_login.php b/Core/Functions/func_login.php new file mode 100644 index 0000000..6456ba1 --- /dev/null +++ b/Core/Functions/func_login.php @@ -0,0 +1,78 @@ +<?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. # +// # # +// ############################################################################ + +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->check_user_credential($email, $pass); + // ou par cookie. + } else { + // On essaie une fois. + $userId = $dbuser->check_token_autologin($cookie[0], $cookie[1]); + // Et on le supprime. + $dbuser->del_token_autologin($cookie[0]); + } + + // Si on a un résultat valide. + if ($userId) { + $dbsearch = new DbSearch; + // LoggedIn devien "true". + $_SESSION["loggedIn"] = "1"; + // et on remplie les variables de la session avec les infos de l'utilisateur. + $userInfo = $dbsearch->get_user_account_by_userid($userId); + foreach ($userInfo as $key => $value) { + $_SESSION[$key] = $value; + } + + // Si était coché remember me ou que la connection s'est faite via cookie, + // on en génère un nouveau. + if ($remember || $cookie) { + $name = "autoLogin"; + // On génère une chaine de caractère aléatoire en supprimant les caractères spéciaux de base64. + $token = str_replace(["+", "/", "="], "", base64_encode(random_bytes(32))); + // On update le nouveau token. + $dbuser->update_token_autologin($_SESSION["email"], $token); + // Enfin on place l'ensemble sur le navigateur du client codé en base64. + setcookie($name, + base64_encode(json_encode(array($_SESSION["email"], $token))), + time() + (86400 * 7), + "/" + ); + } + + // On sélectionne le bon message en fonction du type de connection. + if (!$cookie) { + $message = ["login", "success"]; + } else { + $message = ["loginCookie", "success"]; + } + } else { + // Si la connection a échoué. + if (!$cookie) { + $message = ["login", "fail"]; + // Si la connection à échoué par cookie. + } else { + // Suppression du cookie. + unset($_COOKIE["autoLogin"]); + setcookie("autoLogin", "", time() - 3600, "/"); + $message = ["loginCookie", "fail"]; + } + } + + // On redirige vers message. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?>
\ No newline at end of file diff --git a/Core/Functions/func_logout.php b/Core/Functions/func_logout.php new file mode 100644 index 0000000..dd6a411 --- /dev/null +++ b/Core/Functions/func_logout.php @@ -0,0 +1,40 @@ +<?php + +// ############################################################################ +// # # +// # 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 détruit la session. + session_destroy(); + + // On supprime le token d'auto-connection dans la BDD. + $dbuser->del_token_autologin($_SESSION["email"]); + // Et le cookie + if (isset($_COOKIE["autoLogin"])) { + unset($_COOKIE["autoLogin"]); + setcookie("autoLogin", "", time() - 3600, "/"); + } + + // Et on en redémarre une nouvelle. + session_start(); + $_SESSION["loggedIn"] = "0"; + $_SESSION["lang"] = $lang; + + // Enfin on redirige avec le bon message. + $message = ["logout", "success"]; + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?>
\ No newline at end of file diff --git a/Core/Functions/func_mission.php b/Core/Functions/func_mission.php new file mode 100644 index 0000000..9d009c5 --- /dev/null +++ b/Core/Functions/func_mission.php @@ -0,0 +1,54 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction d'enregistrement d'une mission # +// # # +// ############################################################################ + +function mission_initiate($proId) { + $dbsearch = new DbSearch; + + $_SESSION["missionInitiate"] = [ + "proId" => $proId, + "proJobs" => $dbsearch->get_pro_job_by_proid($proId) + ]; + header("Location: /Templates/mission.php"); + die(); +} + +function mission_register($subject, $clientId, $proId, $jobId) { + $dbmission = new DbMission; + $registered = $dbmission->register_mission($subject, $clientId, $proId, $jobId); + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($registered) { + $message = ["missionRegister", "success"]; + } else { + $message = ["missionRegister", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +function mission_review($missionId, $review, $note) { + $dbmission = new DbMission; + $reviewed = $dbmission->review_mission($missionId, $review, $note); + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($reviewed) { + $message = ["missionReview", "success"]; + } else { + $message = ["missionReview", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?>
\ No newline at end of file diff --git a/Core/Functions/func_myMission.php b/Core/Functions/func_myMission.php new file mode 100644 index 0000000..3531c48 --- /dev/null +++ b/Core/Functions/func_myMission.php @@ -0,0 +1,58 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction de gesrtion de ses missions # +// # # +// ############################################################################ +function mymission_accept_mission($missionId) { + $dbmission = new DbMission; + $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: /Templates/message.php"); + die(); +} + +function mymission_complete_mission($missionId, $userStatus) { + $dbmission = new DbMission; + + switch ($userStatus) { + // Pro + case 1: + $validated = $dbmission->validate_mission_pro_by_missionid($missionId); + break; + // Client + case 2: + $validated = $dbmission->validate_mission_client_by_missionid($missionId); + $_SESSION["missionCompleted"] = [ + "missionId" => $missionId + ]; + header("Location: /Templates/mission.php"); + die(); + default: + break; + } + + // Sélection du message à afficher en fonction de réussite ou pas. + if ($validated) { + $message = ["missionValidated", "success"]; + } else { + $message = ["missionValidated", "fail"]; + } + + // Redirection vers message avec l'index du message à afficher. + $_SESSION["message"] = $message; + header("Location: /Templates/message.php"); + die(); +} + +?>
\ No newline at end of file diff --git a/Core/Functions/func_register.php b/Core/Functions/func_register.php new file mode 100644 index 0000000..b7c02cd --- /dev/null +++ b/Core/Functions/func_register.php @@ -0,0 +1,30 @@ +<?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/Core/Functions/func_search.php b/Core/Functions/func_search.php new file mode 100644 index 0000000..69740da --- /dev/null +++ b/Core/Functions/func_search.php @@ -0,0 +1,81 @@ +<?php + +// ############################################################################ +// # # +// # Description: Fonction pour rechercher les consultants # +// # # +// ############################################################################ + +function search($request, $isResearch) { + // Instanciation des méthodes de recherches de la BDD. + $dbsearch = new DbSearch; + $dbmission = new DbMission; + + // Si c'est une recherche. + if ($isResearch) { + 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_by_proid($result[$i]["userId"]); + // récupération du nombre de mission effectué. + $numberMission = $dbmission->count_pro_missions_by_proid($result[$i]["userId"]); + $result[$i]["numberOfMissions"] = $numberMission[0][0]; + // récupération des notes de l'utilisateur. + $allNotes = $dbsearch->get_pro_note_by_proid($result[$i]["userId"]); + // Pour chaque note on la "push" (ajoute) dans une liste. + $notes = array(); + for ($j = 0; $j < count($allNotes); $j++) { + if ($allNotes[$j][0]) { + array_push($notes, $allNotes[$j][0]); + } + } + + // On fait la moyenne des notes, + // et pour les étoiles on "coupe" tout ce qui est après la virgule en castant en "int". + if ($notes) { + $average = array_sum($notes) / count($notes); + $result[$i]["note"] = round($average, 2); + $result[$i]["star"] = (int)$average; + // Si il n'y a pas encore de note. + } else { + $result[$i]["note"] = 0; + $result[$i]["star"] = 0; + } + } + // Si c'est "plus d'info" et non une recherche. + } else { + $result = $dbsearch->get_user_info_by_userid($request); + for ($i = 0; $i < count($result); $i++) { + $result[$i]["jobs"] = $dbsearch->get_pro_job_by_proid($request); + } + } + + // Redirection vers l'index avec le "payload" (contenu) en fonction du type de recherche. + if ($isResearch) { + $search = array( + "result" => $result, + "isResearch" => true + ); + } else { + $search = array( + "result" => $result, + "isResearch" => false + ); + } + $_SESSION["search"] = $search; + + header("Location: /index.php#separator2"); + die(); +} + +?>
\ No newline at end of file |
