summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDebulois <quentin@debulois.fr>2022-03-31 14:56:45 +0200
committerDebulois <quentin@debulois.fr>2022-03-31 14:56:45 +0200
commitb637d625216e50602d0bde8a544c281ca00af5fa (patch)
tree5e44ad1048f8a3583cc854fe3bc21086ede4d88a
parentc9d4c87b21f1050a780f5296961d24bd17c9cdc8 (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
-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.php (renamed from Wrapper/Functions/func_login.php)32
-rw-r--r--Core/Functions/func_logout.php (renamed from Wrapper/Functions/func_logout.php)28
-rw-r--r--Core/Functions/func_mission.php (renamed from Wrapper/Functions/func_mission.php)24
-rw-r--r--Core/Functions/func_myMission.php (renamed from Wrapper/Functions/func_myMission.php)33
-rw-r--r--Core/Functions/func_register.php30
-rw-r--r--Core/Functions/func_sanitize.php17
-rw-r--r--Core/Functions/func_search.php (renamed from Wrapper/Functions/func_search.php)39
-rw-r--r--Core/wrapper.php (renamed from Wrapper/wrapper.php)126
-rw-r--r--Database/dbmain.php30
-rw-r--r--Database/meth_dbadmin.php72
-rw-r--r--Database/meth_dbmission.php268
-rw-r--r--Database/meth_dbsearch.php62
-rw-r--r--Database/meth_dbuser.php35
-rw-r--r--Documents_et_infos/Anciennes_versions_avant_git.zip (renamed from Anciennes_versions_de_l_exercice.zip)bin1217591 -> 1217591 bytes
-rw-r--r--Documents_et_infos/Structure_plan_de_site/html5_balises.jpgbin0 -> 71847 bytes
-rw-r--r--Documents_et_infos/Structure_plan_de_site/structure_projet web.jpgbin163893 -> 0 bytes
-rw-r--r--Documents_et_infos/Structure_plan_de_site/structure_projet_web.jpgbin0 -> 271075 bytes
-rw-r--r--Documents_et_infos/todo.txt (renamed from todo.txt)2
-rw-r--r--Statics/Css/main.css246
-rw-r--r--Statics/Js/index.js4
-rw-r--r--Statics/Js/main.js15
-rw-r--r--Statics/Js/myMission.js11
-rw-r--r--Templates/Includes/en/message.php (renamed from Views/Includes/en/message.php)30
-rw-r--r--Templates/Includes/en/table.php (renamed from Views/Includes/en/table.php)31
-rw-r--r--Templates/Includes/en/text.php (renamed from Views/Includes/en/text.php)41
-rw-r--r--Templates/Includes/en/title.php20
-rw-r--r--Templates/Includes/fr/message.php (renamed from Views/Includes/fr/message.php)34
-rw-r--r--Templates/Includes/fr/table.php (renamed from Views/Includes/fr/table.php)31
-rw-r--r--Templates/Includes/fr/text.php (renamed from Views/Includes/fr/text.php)41
-rw-r--r--Templates/Includes/fr/title.php20
-rw-r--r--Templates/Includes/incl_form_admin.php198
-rw-r--r--Templates/Includes/incl_form_login.php41
-rw-r--r--Templates/Includes/incl_form_mission.php95
-rw-r--r--Templates/Includes/incl_form_register.php42
-rw-r--r--Templates/Includes/incl_form_userInfo.php137
-rw-r--r--Templates/Includes/incl_global_footer.php26
-rw-r--r--Templates/Includes/incl_global_header.php22
-rw-r--r--Templates/Includes/incl_global_message.php71
-rw-r--r--Templates/Includes/incl_global_navbar.php72
-rw-r--r--Templates/Includes/incl_index_search.php184
-rw-r--r--Templates/Includes/incl_index_slideshow.php34
-rw-r--r--Templates/Includes/incl_table_myMission.php183
-rw-r--r--Templates/admin.php45
-rw-r--r--Templates/autoLogin.php (renamed from Views/autoLogin.php)16
-rw-r--r--Templates/login.php36
-rw-r--r--Templates/logout.php24
-rw-r--r--Templates/message.php41
-rw-r--r--Templates/mission.php47
-rw-r--r--Templates/myMission.php48
-rw-r--r--Templates/register.php36
-rw-r--r--Templates/userInfo.php45
-rw-r--r--Views/Includes/en/title.php15
-rw-r--r--Views/Includes/fr/title.php15
-rw-r--r--Views/Includes/incl_form_admin.php102
-rw-r--r--Views/Includes/incl_form_login.php26
-rw-r--r--Views/Includes/incl_form_mission.php65
-rw-r--r--Views/Includes/incl_form_register.php28
-rw-r--r--Views/Includes/incl_form_userInfo.php99
-rw-r--r--Views/Includes/incl_global_footer.php13
-rw-r--r--Views/Includes/incl_global_header.php15
-rw-r--r--Views/Includes/incl_global_message.php33
-rw-r--r--Views/Includes/incl_global_navbar.php62
-rw-r--r--Views/Includes/incl_index_search.php118
-rw-r--r--Views/Includes/incl_index_slideshow.php21
-rw-r--r--Views/Includes/incl_table_myMission.php158
-rw-r--r--Views/admin.php35
-rw-r--r--Views/login.php26
-rw-r--r--Views/logout.php17
-rw-r--r--Views/message.php30
-rw-r--r--Views/mission.php36
-rw-r--r--Views/myMission.php38
-rw-r--r--Views/register.php26
-rw-r--r--Views/userInfo.php32
-rw-r--r--Wrapper/Functions/func_admin.php53
-rw-r--r--Wrapper/Functions/func_info.php32
-rw-r--r--Wrapper/Functions/func_language.php16
-rw-r--r--Wrapper/Functions/func_register.php22
-rw-r--r--Wrapper/Functions/func_sanitize.php12
-rw-r--r--index.php52
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
index 4f69087..4f69087 100644
--- a/Anciennes_versions_de_l_exercice.zip
+++ b/Documents_et_infos/Anciennes_versions_avant_git.zip
Binary files differ
diff --git a/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg b/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg
new file mode 100644
index 0000000..873958d
--- /dev/null
+++ b/Documents_et_infos/Structure_plan_de_site/html5_balises.jpg
Binary files differ
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
deleted file mode 100644
index d4564ad..0000000
--- a/Documents_et_infos/Structure_plan_de_site/structure_projet web.jpg
+++ /dev/null
Binary files differ
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
new file mode 100644
index 0000000..4aea17c
--- /dev/null
+++ b/Documents_et_infos/Structure_plan_de_site/structure_projet_web.jpg
Binary files differ
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
diff --git a/index.php b/index.php
index a8995be..a2f4053 100644
--- a/index.php
+++ b/index.php
@@ -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