summaryrefslogtreecommitdiff
path: root/Core/Functions
diff options
context:
space:
mode:
Diffstat (limited to 'Core/Functions')
-rw-r--r--Core/Functions/func_admin.php81
-rw-r--r--Core/Functions/func_info.php41
-rw-r--r--Core/Functions/func_language.php22
-rw-r--r--Core/Functions/func_login.php78
-rw-r--r--Core/Functions/func_logout.php40
-rw-r--r--Core/Functions/func_mission.php54
-rw-r--r--Core/Functions/func_myMission.php58
-rw-r--r--Core/Functions/func_register.php30
-rw-r--r--Core/Functions/func_sanitize.php17
-rw-r--r--Core/Functions/func_search.php81
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