From 62bba328514295d37fe88898218b716cbbe4437c Mon Sep 17 00:00:00 2001 From: "nicolas.franco" Date: Tue, 13 Dec 2022 18:10:24 +0100 Subject: [PATCH 1/4] visitor controller structure --- controller/CtrlUser.php | 3 +- controller/FrontCtrl.php | 8 ++- controller/VisitorCtrl.php | 104 +++++++++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 controller/VisitorCtrl.php diff --git a/controller/CtrlUser.php b/controller/CtrlUser.php index 0a2359a..b5b97c0 100644 --- a/controller/CtrlUser.php +++ b/controller/CtrlUser.php @@ -1,10 +1,9 @@ $ursMdl = $ursMdl; $this->$action_User = $action_User; session_start(); - } - - function handleAction(){ + try{ $user = $this->usrMdl.isUser(); // cette fonction retourne quoi? - $action = $_GET['action']; + $action = $_REQUEST['action']; if(($i = array_search($action,$action_User)) !== false){ # si action dans la liste d'actions user if($user == null){ # si pas conncter diff --git a/controller/VisitorCtrl.php b/controller/VisitorCtrl.php new file mode 100644 index 0000000..88561ad --- /dev/null +++ b/controller/VisitorCtrl.php @@ -0,0 +1,104 @@ +loadHome(); + # initialize la page home avec tout les listes + break; + + case 'pageConnection': + $this->go_connection(); + break; + + case 'connecter': + $this->connection(); + # charge la vue de connexion + break; + + case 'pageListe': + $this->go_list(); + break; + + case 'creerListe': + $this->makeList(); + # creer une liste publique + break; + + case 'supprimerListe': + $this->eraseList(); + # supprime une liste publique + break; + + case 'pageTache': + $this->go_task(); + break; + + case 'ajouterTache': + $this->addTask(); + # ajouter une tache a une liste pub + break; + + case 'supprimerTache': + $this->eraseTask(); + # supprimer une tache + break; + + default: + # + $dvueErreur[] = 'Erreur inattendue'; + require($rep.$vues['']); + break; + } + + } catch (Exception $e) { + require("../view/erreur.php"); + } + + function loadHome(){ + + } + + function go_connection(){ + + } + + function connection(){ + + } + + function go_list(){ + + } + + function makeList(){ + + } + + function eraseList(){ + + } + + function go_task(){ + + } + + function addTask(){ + + } + + function eraseTask(){ + + } + + } + + +} +?> \ No newline at end of file From e518f24104be26bb4941dde23d04f4a17e480dec Mon Sep 17 00:00:00 2001 From: "nicolas.franco" Date: Wed, 14 Dec 2022 15:18:46 +0100 Subject: [PATCH 2/4] erreur dans la fonction find pour loadPublicList --- business/ListTask.php | 2 +- controller/VisitorCtrl.php | 12 +++++-- dal/TaskGateway.php | 67 ++++++++++++++++++++++++++------------ model/TaskModel.php | 9 +++-- tests/test.php | 6 ++-- 5 files changed, 66 insertions(+), 30 deletions(-) diff --git a/business/ListTask.php b/business/ListTask.php index 5a2ce29..5d0c002 100644 --- a/business/ListTask.php +++ b/business/ListTask.php @@ -3,7 +3,7 @@ private int $id; private string $nom; private array $taches; - private string $owner; + private $owner; private int $dc; // done counter function __construct($id, $nom, $owner="", $dc=0) { diff --git a/controller/VisitorCtrl.php b/controller/VisitorCtrl.php index 88561ad..d366498 100644 --- a/controller/VisitorCtrl.php +++ b/controller/VisitorCtrl.php @@ -1,9 +1,11 @@ taskModel.loadPublicList(); } function go_connection(){ @@ -94,7 +100,7 @@ class VisitCtrl } function eraseTask(){ - + } } diff --git a/dal/TaskGateway.php b/dal/TaskGateway.php index a5e0b72..8bff2ee 100644 --- a/dal/TaskGateway.php +++ b/dal/TaskGateway.php @@ -51,27 +51,52 @@ class TaskGateway } /*si on veut trouver une liste, juste chercher toutes les taches avec idList= id_de_la_liste*/ - public function find($element="", $valeur=""){ - if(strcmp($element,"")==0) - { - $query='SELECT * FROM Tache'; - $this->con->executeQuery($query); - } - else - { - $query='SELECT * FROM Tache WHERE '.$element.'=:'.$element; - $this->con->executeQuery($query, array( - ':'.$element =>array($valeur,PDO::PARAM_STR))); - } - - $results=$this->con->getResults(); - foreach($results as $row) - { - $tabTaches[]=new Task($row['id'],$row['titre'],$row['description'],$row['priorite'], - $row['idList'],$row['dateDebut'],$row['dateFin'],$row['isDone']); - } - return $tabTaches; - } + # pour toutes les listes d'un user specifique, appeller 2 fois la fonction: + # une fois pour prendre toutes les listes qui ont l'id de l'user + # pour toutes ces listes (foreach), find toutes chaque tache associé + public function find($table, $element="", $valeur=""){ + if($table =='task'){ + if(strcmp($element,"")==0) + { + $query='SELECT * FROM Tache'; + $this->con->executeQuery($query); + } + else + { + $query='SELECT * FROM Tache WHERE '.$element.'=:'.$element; + $this->con->executeQuery($query, array( + ':'.$element =>array($valeur,PDO::PARAM_STR))); + } + + $results=$this->con->getResults(); + foreach($results as $row) + { + $tabTaches[]=new Task($row['id'],$row['titre'],$row['description'],$row['priorite'], + $row['idList'],$row['dateDebut'],$row['dateFin'],$row['isDone']); + } + return $tabTaches; + + } else if($table == 'list'){ + if(strcmp($element,"")==0) + { + $query='SELECT * FROM uList'; + $this->con->executeQuery($query); + } + else + { + $query='SELECT * FROM uList WHERE '.$element.'=:'.$element; + $this->con->executeQuery($query, array( + ':'.$element =>array($valeur,PDO::PARAM_STR))); + } + + $results=$this->con->getResults(); + foreach($results as $row) + { + $tabList[]=new ListTask($row['id'],$row['nom'],$row['user'],$row['dc']); + } + return $tabList; + } + } /* # LIST FUNCTIONS */ /*create, update, delete, read(select info)*/ diff --git a/model/TaskModel.php b/model/TaskModel.php index a505afa..7554801 100644 --- a/model/TaskModel.php +++ b/model/TaskModel.php @@ -32,12 +32,12 @@ class TaskModel public function getAllTask() { - return $this->gtw->find(); + return $this->gtw->find('task'); } public function getTaskBy($element,$valeur) { - return $this->gtw->find($element,$valeur); + return $this->gtw->find('task',$element,$valeur); } /* LIST FUNCTIONS */ @@ -57,5 +57,10 @@ class TaskModel { $this->gtw->delete('list',$id); } + + function loadPublicLists() + { + return $this->gtw->find('list','user','NULL'); + } } ?> diff --git a/tests/test.php b/tests/test.php index a55aa07..966084e 100644 --- a/tests/test.php +++ b/tests/test.php @@ -28,12 +28,12 @@ $mt= new TaskModel($con); //$mt->addTask('3','testIsDone','desc.','urgent','001'); //$mt->modifTask('3','isDone','1'); //$tasks = $mt->getTaskBy('titre','tache1'); -$tasks = $mt->getAllTask(); +$tasks = $mt->loadPublicLists(); foreach($tasks as $i) echo $i->get_id()."
"; -$mt->addList('002','todo2','nifranco'); -$mt->modifList('2','nom','22do'); +// $mt->addList('002','todo2','nifranco'); +// $mt->modifList('2','nom','22do'); //mt->supList('2'); /* ------------- From ca4a84a4a618919053349460518971411f1a7ba9 Mon Sep 17 00:00:00 2001 From: "nicolas.franco" Date: Wed, 21 Dec 2022 16:32:02 +0100 Subject: [PATCH 3/4] fonction loadPrivateLists, taskModel --- business/ListTask.php | 2 +- business/User.php | 2 +- controller/FrontCtrl.php | 7 ++++--- dal/TaskGateway.php | 35 +++++++++++++++++++++++++++++++++++ model/TaskModel.php | 14 +++++++++++++- tests/test.php | 25 ++++++++++++++++--------- 6 files changed, 70 insertions(+), 15 deletions(-) diff --git a/business/ListTask.php b/business/ListTask.php index 5d0c002..9710ce1 100644 --- a/business/ListTask.php +++ b/business/ListTask.php @@ -4,7 +4,7 @@ private string $nom; private array $taches; private $owner; - private int $dc; // done counter + private int $dc; // done counter # juste visuelle?? function __construct($id, $nom, $owner="", $dc=0) { $this->id = $id; diff --git a/business/User.php b/business/User.php index 7de66c5..3c3c203 100644 --- a/business/User.php +++ b/business/User.php @@ -1,6 +1,6 @@ login = $login; diff --git a/controller/FrontCtrl.php b/controller/FrontCtrl.php index 1f9c58a..a2a11b5 100644 --- a/controller/FrontCtrl.php +++ b/controller/FrontCtrl.php @@ -3,8 +3,8 @@ require_once('../model/UserModel.php'); class FrontController { - private UserModel $ursMdl; - private $action_User; + //private UserModel $ursMdl; + //private $action_User; function __construct($ursMdl=new UserModel(), $action_User=[]){ $this->$ursMdl = $ursMdl; @@ -21,10 +21,11 @@ class FrontController require("VisitCtrl.php"); $visitCtrl = new VisitCtrl(); $visitCtrl.handleAction('connecter'); + // inclure la vue de connexion } else { # sinon # handle action avec controlleur user require("UserCtrl.php"); - $userCtrl = new UserCtrl(); + $userCtrl = new UserCtrl(); //action ici $userCtrl.handleAction($action); } diff --git a/dal/TaskGateway.php b/dal/TaskGateway.php index 8bff2ee..f63b3bc 100644 --- a/dal/TaskGateway.php +++ b/dal/TaskGateway.php @@ -107,5 +107,40 @@ class TaskGateway ':nom'=> array($l->get_nom(),PDO::PARAM_STR), ':user'=> array($l->get_owner(),PDO::PARAM_STR))); } + + public function findUserList($user){ + # pas réussit a faire une jointure optimale donc + # decomposé en plusieurs foncitons: + # findUserList + # findTacheList + + $query='SELECT * from uList where user = :user'; + $this->con->executeQuery($query, array( + ':user' => array($user,PDO::PARAM_STR) + )); + + $results = $this->con->getResults(); + foreach($results as $row){ + $tabLists[]= new ListTask($row[0],$row[1],$row[2],$row[3]); + } + return $tabLists; + } + + public function findListTask($list){ + $query='SELECT * from Tache where idList = :idList'; + + $this->con->executeQuery($query, array( + ':idList' => array($list->get_id(),PDO::PARAM_STR) + )); + + $results = $this->con->getResults(); + + foreach($results as $row){ + $taches[]= new Task($row['id'],$row['titre'],$row['description'],$row['priorite'], + $row['idList'],$row['dateDebut'],$row['dateFin'],$row['isDone']); + } + $list->set_taches($taches); + return $list; + } } ?> diff --git a/model/TaskModel.php b/model/TaskModel.php index 7554801..99d53af 100644 --- a/model/TaskModel.php +++ b/model/TaskModel.php @@ -60,7 +60,19 @@ class TaskModel function loadPublicLists() { - return $this->gtw->find('list','user','NULL'); + return $this->gtw->find('list','user','NULL'); // is null!! + // requete avec jointure pour optimizer requete + } + + function loadPrivateLists($user){ + # prend toutes les listes de l'user + $lists = $this->gtw->findUserList($user); + + # pour chacune de ses listes, charge les taches + foreach($lists as &$row){ + $row = $this->gtw->findListTask($row); + } + return $lists; } } ?> diff --git a/tests/test.php b/tests/test.php index 966084e..2ed5480 100644 --- a/tests/test.php +++ b/tests/test.php @@ -7,7 +7,7 @@ echo "

2do test

"; # Test de la Gateway Tache # nouvelle tache -$t = new Task(5,'tacheNotErr','desc.','urgent','001'); +# $t = new Task(5,'tacheNotErr','desc.','urgent','001'); # connection include("credentials.php"); @@ -17,20 +17,27 @@ $con = new Connection('mysql:host=localhost;dbname=phpproject',$user,$pass); $tgt = new TaskGateway($con); //$tgt->insert($t); //$tgt->delete('10'); +//$taches = $tgt->findUserList('nifranco'); +// foreach($taches as $t){ +// echo $t->get_id()." ".$t->get_idList()."
"; +// } # test find /*$tasks=$tgt->find('idList','001'); foreach($tasks as $i) echo $i->get_id()."
"; */ -# Test du modele Tache +# Test LOAD PRIVATE TASKS $mt= new TaskModel($con); -//$mt->addTask('3','testIsDone','desc.','urgent','001'); -//$mt->modifTask('3','isDone','1'); -//$tasks = $mt->getTaskBy('titre','tache1'); -$tasks = $mt->loadPublicLists(); -foreach($tasks as $i) - echo $i->get_id()."
"; +$lists = $mt->loadPrivateLists('nifranco'); + +foreach($lists as $l){ + echo 'List: '.$l->get_id()."
"; + echo "Tasks:
"; + foreach($l->get_taches() as $t){ + echo $t->get_id()."
"; + } +} // $mt->addList('002','todo2','nifranco'); // $mt->modifList('2','nom','22do'); @@ -58,7 +65,7 @@ require('../model/UserModel.php'); // $mdl->ajouter('Anna', 'unmdptrescomplique'); // $mdl->modifLogin('Anna', 'Aeryn'); // $mdl->modifMdp('Aeryn', 'wtfmec'); -// $mdl->supprimer('Aeryn'); +// $mdl->supprimer('Aeryn'); ?> From b4b5fb3d3e3524d7ba2826ec72e5eb12c0da11f8 Mon Sep 17 00:00:00 2001 From: "nicolas.franco" Date: Wed, 21 Dec 2022 17:28:04 +0100 Subject: [PATCH 4/4] loadPublicLists faite --- dal/TaskGateway.php | 14 +++++++++++++- model/TaskModel.php | 9 +++++++-- tests/test.php | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/dal/TaskGateway.php b/dal/TaskGateway.php index f63b3bc..5c7f374 100644 --- a/dal/TaskGateway.php +++ b/dal/TaskGateway.php @@ -139,8 +139,20 @@ class TaskGateway $taches[]= new Task($row['id'],$row['titre'],$row['description'],$row['priorite'], $row['idList'],$row['dateDebut'],$row['dateFin'],$row['isDone']); } - $list->set_taches($taches); + if(!empty($taches)) + $list->set_taches($taches); return $list; } + + public function findPublicList(){ + $query='SELECT * from uList where user is NULL'; + $this->con->executeQuery($query); + + $results = $this->con->getResults(); + foreach($results as $row){ + $tabLists[]= new ListTask($row[0],$row[1],$row[2],$row[3]); + } + return $tabLists; + } } ?> diff --git a/model/TaskModel.php b/model/TaskModel.php index 99d53af..b3ea54b 100644 --- a/model/TaskModel.php +++ b/model/TaskModel.php @@ -60,8 +60,13 @@ class TaskModel function loadPublicLists() { - return $this->gtw->find('list','user','NULL'); // is null!! - // requete avec jointure pour optimizer requete + $lists = $this->gtw->findPublicList(); + + foreach($lists as &$row){ + $row = $this->gtw->findListTask($row); + } + return $lists; + } function loadPrivateLists($user){ diff --git a/tests/test.php b/tests/test.php index 2ed5480..ee24aee 100644 --- a/tests/test.php +++ b/tests/test.php @@ -29,7 +29,7 @@ foreach($tasks as $i) # Test LOAD PRIVATE TASKS $mt= new TaskModel($con); -$lists = $mt->loadPrivateLists('nifranco'); +$lists = $mt->loadPublicLists(); foreach($lists as $l){ echo 'List: '.$l->get_id()."
";