From 699ca776c7307ee3d1b4fce9d6202b65a7a3eb2e Mon Sep 17 00:00:00 2001 From: Allan POINT Date: Sun, 2 Jan 2022 15:03:18 +0100 Subject: [PATCH] Ajout de commentaires --- DAL/gateways/ListeGateway.php | 2 +- controleur/ControleurConnecte.php | 231 +++++++++++++++++++++++------- modeles/ModelConnecte.php | 94 +++++++++--- 3 files changed, 261 insertions(+), 66 deletions(-) diff --git a/DAL/gateways/ListeGateway.php b/DAL/gateways/ListeGateway.php index 34128be..474961e 100644 --- a/DAL/gateways/ListeGateway.php +++ b/DAL/gateways/ListeGateway.php @@ -31,7 +31,7 @@ class ListeGateway ":createur" => [$l->getCreateur(), PDO::PARAM_STR] ]); } - public function inserer2(string $nom, string $createur) + public function inserer2(string $nom, string $createur) : bool { $requette = "INSERT INTO _TodoList(nom, dateCreation, createur) VALUES(:nom, NOW(), :createur)"; diff --git a/controleur/ControleurConnecte.php b/controleur/ControleurConnecte.php index e1565d5..066a17a 100644 --- a/controleur/ControleurConnecte.php +++ b/controleur/ControleurConnecte.php @@ -4,20 +4,13 @@ require_once("controleur/ControleurCommun.php"); class ControleurConnecte { function __construct() { - global $rep,$vues; // nécessaire pour utiliser variables globales - - //debut - //on initialise un tableau d'erreur - - $dVueEreur = array (); + $erreurs = array (); try{ + // Récupération de l'action a effectuer $action=Validation::netoyerString($_REQUEST['action']); switch($action) { - - //pas d'action, on r�initialise 1er appel case NULL: - echo "Normal"; - //$this->Reinit(); + $this->seeLists(); break; case "seeLists": $this->seeLists(); @@ -62,16 +55,11 @@ class ControleurConnecte { $this->veuxModifierTache(); break; default: - echo "Default"; - /* - $dVueEreur[] = "Erreur d'appel php"; - require ($rep.$vues['vuephp1']); - */ + throw new Exception("Action inconnue"); break; } }catch(PDOException $e) { - //si erreur BD, pas le cas ici echo "Erreur PDO"; $erreurs[] =$e->getMessage(); require ("vues/erreur.php"); @@ -81,78 +69,108 @@ class ControleurConnecte { $erreurs[] =$e2->getMessage(); require ("vues/erreur.php"); } - // exit(0); - } - - function Reinit() { - global $rep,$vues; // nécessaire pour utiliser variables globales - require ($rep.$vues['connection']); } + /* + * \brief Permet d'afficher les lists de l'utilisateur.trice connecté.e + */ function seeLists() { + // Si la page n'est pas set, on prend la première page if(!isset($_REQUEST["page"]) || empty($_REQUEST["page"])) { $page = 1; } else { + // si la validation a échouée, on prend la première page $page = Validation::validerUnIntSupperieurZero($_REQUEST["page"]) ? $_REQUEST["page"] : 1; } + // Si le nombre d'élément n'est pas set, on en prend par défaut 10 if(!isset($_GET["nbElements"]) || empty($_GET["nbElements"])) { $nbElements = 10; } else { + // Si la validation a échouée, on prend 10 éléments, sinon, le nombre désiré par l'utilisateur.trice $nbElements = Validation::validerUnIntSupperieurZero($_GET["nbElements"]) ? $_GET["nbElements"] : 10; } $mdl = new ModelConnecte(); + + // Récupération des listes de l'utilisateur.trice connécté.e par le modèle $todoLists = $mdl->getLists(Validation::netoyerString($_SESSION["login"]), $page, $nbElements); + + // Récupération du numéro de page le plus grand en fonction des taches de l'utilisateur.trice et du nombre d'éléments demendé $maxPage = $mdl->getMaxPageListes(Validation::netoyerString($_SESSION["login"]), $nbElements); + + // Affichage de la vue require("vues/accueil.php"); } + /* + * \brief Permet de visualiser les tache d'une liste + */ function seeList() { + // Erreur si aucune liste n'est demendée. if(!isset($_REQUEST["list"]) || empty($_REQUEST["list"])) { throw new Exception("Aucune liste n'est demendée"); } + // Erreur si le numéro de la liste est < 0 if(!Validation::validerUnIntSupperieurZero($_REQUEST["list"])) { throw new Exception("Valeur illégale de la liste requétée"); } + + // TODO: Verifier que c'est bien une liste de l'utilisateur.trice connécté.e + + + // Si la page n'est pas set, on prend la première page if(!isset($_REQUEST["page"]) || empty($_REQUEST["page"])) { $page = 1; } else { + // si la validation a échouée, on prend la première page $page = Validation::validerUnIntSupperieurZero($_REQUEST["page"]) ? $_REQUEST["page"] : 1; } + // Si le nombre d'élément n'est pas set, on en prend par défaut 10 if(!isset($_GET["nbElements"]) || empty($_GET["nbElements"])) { $nbElements = 10; } else { + // Si la validation a échouée, on prend 10 éléments, sinon, le nombre désiré par l'utilisateur.trice $nbElements = Validation::validerUnIntSupperieurZero($_GET["nbElements"]) ? $_GET["nbElements"] : 10; } $mdl = new ModelConnecte(); + + // Récupération des taches dans le modèle $taches = $mdl->getTaches($_REQUEST["list"], $page, $nbElements); + + // Définition des variable nécéssaire à la vue. $actualList = $_REQUEST["list"]; $nomListe = $mdl->getNomListe($actualList); $maxPage = $mdl->getMaxPageTaches($actualList, $nbElements); + + // Affichage de la vue require("vues/editeurDeStatuts.php"); } + /* + * \brief Permet d'enrgistrer l'état des taches d'une listes + */ function editDone() { + // estFait doit être un tableau des taches faites if(isset($_REQUEST["estFait"])) { if(!is_array($_REQUEST["estFait"])) @@ -160,6 +178,12 @@ class ControleurConnecte { throw new Exception("La liste des taches faites doit être un tableau."); } } + else + { + $_REQUEST["estFait"] = array(); + } + + // exist contient toute les taches de la page où été l'utilisateur.trice if(!isset($_REQUEST["exist"])) { throw new Exception("Aucune tâche n'est définit"); @@ -168,18 +192,33 @@ class ControleurConnecte { { throw new Exception("La liste des taches doit être un tableau."); } + $mdl = new ModelConnecte(); - $mdl->setDoneTaches(); + + // Enregistrement avec le modle + $list = $mdl->setDoneTaches($_REQUEST["exist"], $_REQUEST["estFait"]); + + // Rediréction + $_REQUEST["action"] = "seeList"; + $_REQUEST["list"] = $list; new ControleurConnecte(); } + /* + * \brief Permet d'afficher la page d'ajout de liste + */ function wantAddList() { + // Affichage de la vue require("vues/ajouterListe.php"); } + /* + * \brief Permet de créer une todoList + */ function addList() { + // Si le nom de la nouvelle liste n'existe pas ou si elle est vide, on lève une exception if(!isset($_REQUEST["nomNouvelleListe"])) { throw new Exception("La nouvelle liste doit avoir un nom!"); @@ -188,24 +227,32 @@ class ControleurConnecte { { throw new Exception("La nouvelle liste doit avoir un nom!"); } + // Nétoyage du nom de la nouvelle liste $nom = Validation::netoyerString($_REQUEST["nomNouvelleListe"]); + + // Si nom est null, c'est qu'il y a eu un problème avec le netoyage if(is_null($nom)) { throw new Exception("Le nom de la nouvelle liste contien un ou plusieurs caractères illégales."); } $mdl = new ModelConnecte(); + + // Création de la todoList par le modèle. $mdl->createTodoList($nom); + + // Rediréction vers l'accueil $_REQUEST["action"] = "seeLists"; new ControleurConnecte(); } + /* + * \brief Permet d'afficher la page de création de tache + */ function wantAddTask() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } + + // Si la liste où on veut rajouter la tache n'est pas set ou est vide, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le numero de liste doit exister"); @@ -214,21 +261,28 @@ class ControleurConnecte { { throw new Exception("Le numero de liste doit être définit"); } + + // Validation du numérode la liste, renvoi null si la validation a échouée $actualList = Validation::validerUnIntSupperieurZero($_REQUEST["list"]) ? $_REQUEST["list"] : null; + + // Si la validation a échouée, on lève une exception if(is_null($actualList)) { throw new Exception("Le numero de liste doui être un entier supperieur à 0"); } + + // Affichage de la vue require("vues/addTask.php"); } + + /* + * \brief Permet d'ajouter une tache dans une liste + */ function addTask() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } - + + // Si le nom de la tache est vide ou n'est pas set, on lève une exception if(!isset($_REQUEST["nomTache"])) { throw new Exception("Le nom de la novelle tache est introuvable (?o?)'"); @@ -237,10 +291,14 @@ class ControleurConnecte { { throw new Exception("Le nom de la nouvelle tache ne doit pas être vide"); } + + // Si le commentaire de la tache n'est pas set, on lève une exception if(!isset($_REQUEST["commentaireTache"])) { throw new Exception("Le commentaire de la tache est introuvable!"); } + + // Si le numéro de la liste est vide ou n'est pas set, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le numero de liste doit exister"); @@ -249,27 +307,35 @@ class ControleurConnecte { { throw new Exception("Le numero de liste doit être définit"); } + + // Validation des paramètres $list = Validation::validerUnIntSupperieurZero($_REQUEST["list"]) ? $_REQUEST["list"] : null; $nom = Validation::netoyerString($_REQUEST["nomTache"]); $comm = Validation::netoyerString($_REQUEST["commentaireTache"]); + + // Verification des paramètre, si il y en a 1 qui vas pas, on lève une exception if(is_null($nom) || is_null($comm) || is_null($list)) { throw new Exception("Le nom, la liste ou le commentaire de la nouvelle tache contiennent des caractèrent illégales!"); } + + // Création de la tache par le modèle $mdl->createTask($nom, $comm, $list); + + // Rediréction vers la liste modifée $_REQUEST["action"] = "seeList"; $_REQUEST["list"] = $list; new ControleurConnecte(); } + /* + * \brief Permet de supprimer une liste + */ function supprimerListe() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } + // Si le numérode liste n'est pas set ou est vide, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -278,22 +344,28 @@ class ControleurConnecte { { throw new Exception("Le paramètre list doit contenire une valeur"); } + + // Si le numéro de liste est <= 0, on lève une exception if(!Validation::validerUnIntSupperieurZero($_REQUEST["list"])) { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + // TODO: verifier que c'est bien une liste de l'utilisateur.trice $mdl->supprimerListe($_REQUEST["list"]); + + // Rediréction vers l'accueil $_REQUEST["action"] = "seeLists"; new ControleurConnecte(); } + /* + * Permet d'effacer une tache d'une liste + */ function delTask() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } + + // Si la tache est vide, pas set ou <= 0, on lève une exception if(!isset($_REQUEST["task"])) { throw new Exception("Le parametre task doit exister"); @@ -306,6 +378,10 @@ class ControleurConnecte { { throw new Exception("Le parametre task doit être un entier strictement superieur à 0"); } + + //TODO: verifier que c'est bien la tache de l'utilisateur.trice + + // Si le numéro de la liste est vide, pas set ou <= 0, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -318,18 +394,36 @@ class ControleurConnecte { { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + //TODO: verifier que c'est bien la list de l'utilisateur.trice et que c'est bien une tache de la liste + + // Suppression de la tache par le modèle $mdl->delTask($_REQUEST["task"]); + + //Rediréction vers l'affichage de la liste modifiée $_REQUEST["action"] = "seeList"; new ControleurConnecte(); } + + /* + * \brief permet de se déconnécter + */ function logout() { $mdl = new ModelConnecte(); + + // Destruction de la séssion par le modèle $mdl->destroySession(); + + // Rediréction vers la page de connection new ControleurCommun(); } + + /* + * \brief permet d'afficher la page de modification d'une liste (le nom de la liste) + */ function veuxModifierListe() { + // Si le numéro de la liste n'est pas set, vide ou <= 0, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -342,16 +436,22 @@ class ControleurConnecte { { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + + // Définition des varables dont a besoin la vue $listeAModifier = $_REQUEST["list"]; + + // Affichage de la vue require("vues/editeurDeListe.php"); } + + /* + * \brief Permet de modifier le nom de la liste list + */ function modifyList() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } + + // Si le numéro de la lsite est vide, pas set ou <=0, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -364,6 +464,8 @@ class ControleurConnecte { { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + + // Si le nouveau non n'est pas set, vide on invalide, on lève une exception if(!isset($_REQUEST["nouveauNom"])) { throw new Exception("Le parametre nouveauNom doit exister"); @@ -377,12 +479,21 @@ class ControleurConnecte { { throw new Exception("Le nouveau nom contient des caractères illégeaux"); } + + // Modification du nom de la liste par le modèle $mdl->modifierNomListe($_REQUEST["list"], $nouveauNom); + + // Rediréction vers l'accueil $_REQUEST["action"] = "seeLists"; new ControleurConnecte(); } + + /* + * \brief Permet d'afficher la page de modification d'une tache + */ function veuxModifierTache() { + // Si la tache est vide, pas set ou <=0, on lève une exception if(!isset($_REQUEST["task"])) { throw new Exception("Le parametre task doit exister"); @@ -395,6 +506,8 @@ class ControleurConnecte { { throw new Exception("Le parametre task doit être un entier strictement superieur à 0"); } + + // Si la liste est vide, pas set ou <=0, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -407,17 +520,23 @@ class ControleurConnecte { { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + + // Définition des varable nécéssaire à la vue $tacheAModifier = $_REQUEST["task"]; $listeAModifier = $_REQUEST["list"]; + + // Affichage de la vue require("vues/editeurDeTache.php"); } + + /* + * \brief Permet de modifier une tache + */ function editionTache() { $mdl = new ModelConnecte(); - if(!$mdl->estConnecte()) - { - throw new Exception("Permission non suffisantes pour effectuer cette action!"); - } + + // Si le numéro de la tache est pas set, vide ou <=0, on lève une exception if(!isset($_REQUEST["task"])) { throw new Exception("Le parametre task doit exister"); @@ -430,6 +549,8 @@ class ControleurConnecte { { throw new Exception("Le parametre task doit être un entier strictement superieur à 0"); } + + // Si le numéro de la liste est pas set, vide ou <=0, on lève une exception if(!isset($_REQUEST["list"])) { throw new Exception("Le parametre list doit exister"); @@ -442,6 +563,8 @@ class ControleurConnecte { { throw new Exception("Le parametre list doit être un entier strictement superieur à 0"); } + + // Si le nom est vide ou pas set, on lève une exception if(!isset($_REQUEST["nom"])) { throw new Exception("Le parametre nom doit exister"); @@ -450,18 +573,30 @@ class ControleurConnecte { { throw new Exception("Le paramètre nom doit contenire une valeur"); } + + // Si le commentaire est pas set, on lève une exception if(!isset($_REQUEST["commentaire"])) { throw new Exception("Le parametre commentaire doit exister"); } + + // Validation des paramètres $nom = Validation::netoyerString($_REQUEST["nom"]); $comm = Validation::netoyerString($_REQUEST["commentaire"]); + + // Si un des paramètres est invalide, on lève une exception if(is_null($nom) || is_null($comm)) { throw new Exception("Le nom ou le commentaire contien des valeurs illégales"); } + + // Modification de la tache par le modèle $mdl->modifierNomCommTache($_REQUEST["task"], $nom, $comm); + + // Définition des variables nécessaire à la vue $list = $_REQUEST["list"]; + + // Rediréction vers l'affichage le la liste list $_REQUEST["action"] = "seeList"; new ControleurConnecte(); } diff --git a/modeles/ModelConnecte.php b/modeles/ModelConnecte.php index 248d581..630aa6e 100644 --- a/modeles/ModelConnecte.php +++ b/modeles/ModelConnecte.php @@ -6,24 +6,43 @@ require_once("DAL/gateways/ListeGateway.php"); class ModelConnecte { + /* + * \brief Permmet de créer une séssion pour se connécter + * \param[in] login Login de l'utilisateur.trice + * \param[in] mdp Mot de passe en claire de l'utilisateur.trice + * \return Le compte connécté + */ public function connection(string $login, string $mdp) : Compte { - require("config/dsn.php"); - $gw = new CompteGateway(new Connection($dsn, "alpoint", "allanallan")); + // Connection à la basse de données + global $dsn, $loginDB, $pswdDB; + $gw = new CompteGateway(new Connection($dsn, $loginDB, $pswdDB)); + + // Récupère le compte $login $compte = $gw->getCompteParPseudo($login); + + // Si il a pas trouvé le compte $login, c'est qu'il existe pas if($compte == null) { throw new Exception("Le login ou le mot de passe est incorecte"); } + + // Verification du mdp if(!password_verify($mdp, $compte->getMotDePasse())) { throw new Exception("Le login ou le mot de passe est incorecte"); } + + // Création de la session $_SESSION["login"] = $compte->getPseudonyme(); $_SESSION["Lists"] = $compte->getListes(); return $compte; } + /* + * \brief Permet de savoir si un.e utilisateur.trice est connécté.e + * \return True si une personne est connéctée, sinon false + */ public function estConnecte() : bool { if(isset($_SESSION["login"]) && !empty($_SESSION["login"])) @@ -33,28 +52,52 @@ class ModelConnecte return false; } + /* + * \brief Permet d'avoir les $nbElements listes de la page $page appartenant à $pseudo + * \param[in] pseudo Pseudo de l'utilisateur.trice + * \param[in] page Page à charger + * \param[in] nbElements Nombre de liste à charger + * \return La liste des listes de $pseudo + */ public function getLists(string $pseudo, int $page, int $nbElements) { + // Connéction a la base de données global $dsn, $loginDB, $pswdDB; $gw = new ListeGateway(new Connection($dsn, $loginDB, $pswdDB)); + return $gw->getListeParCreateur($page, $nbElements, $pseudo); } - public function getTaches(int $liste, $page, $nbElements) - { + /* + * \brief Permet d'avoir les $nbElements taches de la page $page appartenant à $liste + * \param[in] liste ID de la liste + * \param[in] page Numéro de la page à charger + * \param[in] nbElements Nombre de tache à charger + * \return Les taches de la liste $liste + */ + public function getTaches(int $liste, int $page, int $nbElements) + { + // Connection à la base de données global $dsn, $loginDB, $pswdDB; $gw = new TacheGateway(new Connection($dsn, $loginDB, $pswdDB)); - return $taches = $gw->getTachesParIDListe($liste, $page, $nbElements); + + return $gw->getTachesParIDListe($liste, $page, $nbElements); } - public function setDoneTaches() + /* + * \brief Permet de modifier l'état de taches + * \param[in] taches Toutes les tâches chargées + * \param[in] tachesFaites Toute les taches chargées faites + * \return Le numéro de la listes modifiée + */ + public function setDoneTaches($taches, $tachesFaites) : int { global $dsn, $loginDB, $pswdDB; $gw = new TacheGateway(new Connection($dsn, $loginDB, $pswdDB)); $tacheID = null; - foreach($_REQUEST["exist"] as $tache) + foreach($taches as $tache) { - if(in_array($tache, isset($_REQUEST["estFait"])?$_REQUEST["estFait"]:array() )) + if(in_array($tache, $tachesFaites)) { if(!$gw->modifierDoneTache($tache, true)) { @@ -69,10 +112,15 @@ class ModelConnecte } $tacheID = $tache; } - $_REQUEST["action"] = "seeList"; - $_REQUEST["list"] = $gw->getListeParIDTache($tacheID); + return $gw->getListeParIDTache($tacheID); } - public function createTodoList(string $nom) + + /* + * \brief Créer une TodoList + * \param[in] nom nom de la TodoList à créer + * \return True si tout c'est bien passé. Sinon false. + */ + public function createTodoList(string $nom) : bool { global $dsn, $loginDB, $pswdDB; $gw = new ListeGateway(new Connection($dsn, $loginDB, $pswdDB)); @@ -85,17 +133,29 @@ class ModelConnecte { throw new Exception("Erreur avec la valeur enregistré du pseudonyme"); } - $gw->inserer2($nom, $pseudo); + return $gw->inserer2($nom, $pseudo); } - public function createTask(string $nom, string $comm, int $list) + + /* + * \brief Créer une tache + * \param[in] nom Nom de la tache + * \param[in] comm Commentaire de la tache + * \param[in] list ID de la liste à modifier + * \return True si tout c'est bien passé. Sinon false. + */ + public function createTask(string $nom, string $comm, int $list) : bool { global $dsn, $loginDB, $pswdDB; + $gw = new TacheGateway(new Connection($dsn, $loginDB, $pswdDB)); - if(!$gw->insererSimple($nom, $comm, $list)) - { - throw new Exception("Erreur lors de la création de la tache"); - } + return $gw->insererSimple($nom, $comm, $list); } + + /* + * \brief Supprime une liste + * \param[in] listID ID de la liste a supprimer + * \return True en cas de succès. Sinon false + */ public function supprimerListe(int $listID) : bool { global $dsn, $loginDB, $pswdDB;