parent
4fed04027e
commit
c9486c885c
@ -0,0 +1,33 @@
|
||||
<?php
|
||||
class Connection extends PDO {
|
||||
|
||||
private $stmt;
|
||||
|
||||
public function __construct(string $dsn, string $username, string $password) {
|
||||
|
||||
parent::__construct($dsn,$username,$password);
|
||||
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
}
|
||||
|
||||
|
||||
/** * @param string $query
|
||||
* @param array $parameters *
|
||||
* @return bool Returns `true` on success, `false` otherwise
|
||||
*/
|
||||
|
||||
public function executeQuery(string $query, array $parameters = []) : bool{
|
||||
$this->stmt = parent::prepare($query);
|
||||
foreach ($parameters as $name => $value) {
|
||||
$this->stmt->bindValue($name, $value[0], $value[1]);
|
||||
}
|
||||
|
||||
return $this->stmt->execute();
|
||||
}
|
||||
|
||||
public function getResults() : array {
|
||||
return $this->stmt->fetchall();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -0,0 +1,89 @@
|
||||
<?php
|
||||
require_once("metier/Compte.php");
|
||||
require_once("DAL/gateways/ListeGateway.php");
|
||||
class CompteGateway
|
||||
{
|
||||
// Attributs
|
||||
private $conn;
|
||||
|
||||
// Constructeur
|
||||
public function __construct($conn)
|
||||
{
|
||||
$this->conn = $conn;
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètre : comptreAInserer => Objet de type compte déstiné à être mémorisé
|
||||
* Retour : True si la requette a été bien éxécuter. Sinon false
|
||||
* Finalité : Enregistrer en base de données un Compte
|
||||
*/
|
||||
public function inserer(Compte $compteAInserer) : bool
|
||||
{
|
||||
$requette = "INSERT INTO _Compte(pseudonyme, dateCreation, motDePasse)
|
||||
VALUSES(:pseudo, :date, :mdp)";
|
||||
return $this->conn->executeQuerry($requette, [
|
||||
":pseudo" => [$compteAInserer->getPseudonyme(), PDO::PARAM_STR],
|
||||
":date" => ["STR_TO_DATE(".$compteAInserer->getDateCreation().")", PDO::PARAM_STR],
|
||||
":mdp" => [$compteAInserer->getMotDePasse(), PDO::PARAM_STR]
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètre : compteAEditer => Compte à éditer en base de données
|
||||
* Retour : True si la requette a été bien éxécuter. Sinon false
|
||||
* Finalité : Éditer un Compte identifié par son pseudonyme en base de données
|
||||
*/
|
||||
public function modifier(Compte $compteAModifier)
|
||||
{
|
||||
$requette = "UPDATE _Compte SET pseudonyme=:pseudo, dateCreation=:date, motDePasse=:mdp";
|
||||
return $this->conn->executeQuerry($requette, [
|
||||
":pseudo" => [$compteAModifier->getPseudonyme(), PDO::PARAM_STR],
|
||||
":date" => ["STR_TO_DATE(".$compteAModifier->getDateCreation().")", PDO::PARAM_STR],
|
||||
":mdp" => [$compteAModifier->getMotDePasse(), PDO::PARAM_STR]
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : compteASupprimer => compte à supprimer de la base de données
|
||||
* Retour : True si la requette a été bien éxécuter. Sinon false
|
||||
* Finalité : Supprimer un compte de la base de données
|
||||
*/
|
||||
public function supprimer($compteASupprimer)
|
||||
{
|
||||
$requette = "DELETE FROM _Compte WHERE pseudonyme=:id";
|
||||
return $this->conn->executeQuerry($requette, [
|
||||
":id" => [$compteAModifier->getPseudonyme(), PDO::PARAM_INT]
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : pseudo => Pseudonyme du compte a récupérer en base de données
|
||||
* Retour : Un tableau contenant tout les compte avec le pseudonyme <pseudo> (devrais avoir une taille entre 0 et 1)
|
||||
* Finalité : Récupérer un Compte <pseudo> en base de données et l'instancier.
|
||||
*/
|
||||
public function getCompteParPseudo(string $pseudo) : iterable
|
||||
{
|
||||
$gw = new ListeGateway($this->conn());
|
||||
$requete = "SELECT * FROM _Compte WHERE pseudonyme=:pseudo";
|
||||
if(!$this->conn->executeQuerry($requete, [":pseudo" => [$pseudo, PDO::PARAM_STR]]))
|
||||
{
|
||||
return array();
|
||||
}
|
||||
$comptesSQL = $this->conn->getResults();
|
||||
$comptes = array();
|
||||
$listes = array();
|
||||
|
||||
foreach($comptesSQL as $compte)
|
||||
{
|
||||
$comptes[] = new Compte(
|
||||
$compte["pseudonyme"],
|
||||
$compte["dateCreation"],
|
||||
$gw->getListeParCreateur($compte["pseudonyme"]),
|
||||
$compte["motDePasse"],
|
||||
);
|
||||
return $comptes;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
interface Gateway
|
||||
{
|
||||
public function inserer($itemAInserer);
|
||||
public function modifier($itemAModifier);
|
||||
public function supprimer($itemASupprimer);
|
||||
}
|
@ -0,0 +1,182 @@
|
||||
<?php
|
||||
require_once("metier/Tache.php");
|
||||
require_once("metier/TodoList.php");
|
||||
require_once("DAL/gateways/TacheGateway.php");
|
||||
class ListeGateway
|
||||
{
|
||||
|
||||
// Attributs
|
||||
private $conn;
|
||||
|
||||
|
||||
// Constructeurs
|
||||
public function __construct($conn)
|
||||
{
|
||||
$this->conn = $conn;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Paramètre : l => TodoList à inserer en base de données
|
||||
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
|
||||
* Finalité : Inserer une TodoList en base de données
|
||||
*/
|
||||
public function inserer(TodoList $l) : bool
|
||||
{
|
||||
$requete = "INSERT INTO _TodoList(nom, dateCreation, createur)
|
||||
VALUES(:nom, :date, :createur)";
|
||||
return $this->conn->executeQuery($requete, [
|
||||
":nom" => [$l->getNom(), PDO::PARAM_STR],
|
||||
":date" => ["STR_TO_DATE(".$l->getDateCreation().")", PDO::PARAM_STR],
|
||||
":createur" => [$l->getCreateur(), PDO::PARAM_STR]
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : l => TodoList à supprimer de la base de données
|
||||
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
|
||||
* Finalité : Supprimer une liste <l> de la base de données
|
||||
*/
|
||||
public function supprimer(TodoList $l) : bool
|
||||
{
|
||||
$requete = "DELETE FROM _TodoList WHERE listeID=:id";
|
||||
return $this->conn->executeQuery($requete,[
|
||||
":id"=>[$l->getID(), PDO::PARAM_INT]
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : l => TodoList à éditer en base de données
|
||||
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
|
||||
* Finalité : Éditer la TodoList <l> en base de données
|
||||
*/
|
||||
public function modifier(TodoList $l) : bool
|
||||
{
|
||||
$requete="UPDATE _TodoList SET
|
||||
nom=:n, public=:p";
|
||||
return $this->conn->executeQuery($requete, [
|
||||
":n" => [$l->getNom(), PDO::PARAM_STR],
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : page => Numéro de la page à afficher
|
||||
* nbTache => Nombre de tâches à afficher par pages
|
||||
* Retour : Retourne un tableau de listes de taille maximale <nbTache> ordoné par date de création
|
||||
* Finalité : Récuperer les todoLists en bases de données par ordre de création et les instancier
|
||||
*/
|
||||
public function listeParDate(int $page, int $nbTache) : iterable
|
||||
{
|
||||
$gwTache = new TacheGateway($this->conn);
|
||||
$lites = array();
|
||||
$requete = "SELECT * FROM _TodoList ORDER BY dateCreation LIMIT :p+:n, :n";
|
||||
$isOK=$this->conn->executeQuery($requete, [
|
||||
":p" => [$page-1, PDO::PARAM_INT],
|
||||
":n" => [$nbTache, PDO::PARAM_INT]
|
||||
]);
|
||||
if(!$isOK)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$res = $this->conn->getResults();
|
||||
foreach($res as $liste)
|
||||
{
|
||||
$listes[] = new TodoList(
|
||||
$liste["listeID"],
|
||||
$liste["nom"],
|
||||
$liste["Createur"],
|
||||
$liste["dateCreation"],
|
||||
$gwTache->getTachesParIDListe($liste["listeID"])
|
||||
);
|
||||
}
|
||||
return $listes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : page => Numéro de la page à afficher
|
||||
* nbTache => Nombre de tâches à afficher par pages
|
||||
* Retour : Retourne un tableau de listes de taille maximale <nbTache> ordoné par nom de liste (ordre lexicographique)
|
||||
* Finalité : Récuperer les todoLists en bases de données par ordre de lexicographique et les instancier
|
||||
*/
|
||||
public function listeParNom(int $page, int $nbListes) : iterable
|
||||
{
|
||||
$gwTache = new TacheGateway($this->conn);
|
||||
$lites = array();
|
||||
$requete = "SELECT * FROM _TodoList ORDER BY nom LIMIT :p+:n, :n";
|
||||
$isOK=$this->conn->executeQuery($requete, [
|
||||
":p" => [$page-1, PDO::PARAM_INT],
|
||||
":n" => [$nbListes, PDO::PARAM_INT]
|
||||
]);
|
||||
if(!$isOK)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$res = $this->conn->getResults();
|
||||
|
||||
foreach($res as $liste)
|
||||
{
|
||||
$listes[] = new TodoList(
|
||||
$liste["listeID"],
|
||||
$liste["nom"],
|
||||
$liste["Createur"],
|
||||
$liste["dateCreation"],
|
||||
$gwTache->getTachesParIDListe($liste["listeID"], 1, 10)
|
||||
);
|
||||
}
|
||||
return $listes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : page => Numéro de la page à afficher
|
||||
* nbTache => Nombre de tâches à afficher par pages
|
||||
* createur => Pseudonyme du créateur des listes enregistrés en base de données
|
||||
* Retour : Retourne un tableau de listes de taille maximale <nbTache> créer par <createur> de liste
|
||||
* Finalité : Récuperer les todoLists en bases de données créer par créateur et les instancier
|
||||
*/
|
||||
public function getListeParCreateur(int $page, int $nbListes, string $createur) : iterable
|
||||
{
|
||||
$gwTache = new TacheGateway($this->conn);
|
||||
$lites = array();
|
||||
$requete = "SELECT * FROM _TodoList WHERE Createur = :c LIMIT :p+:n, :n";
|
||||
$isOK=$this->conn->executeQuery($requete, [
|
||||
":c" => [$createur, PDO::PARAM_STR],
|
||||
":p" => [$page-1, PDO::PARAM_INT],
|
||||
":n" => [$nbListes, PDO::PARAM_INT]
|
||||
]);
|
||||
if(!$isOK)
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$res = $this->conn->getResults();
|
||||
|
||||
foreach($res as $liste)
|
||||
{
|
||||
$listes[] = new TodoList(
|
||||
$liste["listeID"],
|
||||
$liste["nom"],
|
||||
$liste["Createur"],
|
||||
$liste["dateCreation"],
|
||||
$gwTache->getTachesParIDListe($liste["listeID"], 1, 10)
|
||||
);
|
||||
}
|
||||
return $listes;
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètres : l => TodoList à acctualiser
|
||||
* pages => Numéro de la page à afficher
|
||||
* nbTache => Nombre de tâches à afficher par pages
|
||||
* Retour : Retourne la liste <l> avec les <nbTaches> tâches de la page <page>
|
||||
* Finalité : Actualiser les taches contenues dans <l> en fonction de <page> et <nbTaches>
|
||||
*/
|
||||
public function ActualiserListe(TodoList $l, int $page, int $nbTaches) : TodoList
|
||||
{
|
||||
$gwTache = new TacheGateway($this->conn);
|
||||
$l->setTaches($gwTaches->getTachesParIDListe($l->getID(), $page, $nbTaches));
|
||||
return $l;
|
||||
}
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
<?php
|
||||
require_once('metier/Tache.php');
|
||||
|
||||
|
||||
class TacheGateway
|
||||
{
|
||||
// Attributs
|
||||
private $conn;
|
||||
|
||||
// constructeur
|
||||
public function __construct(Connection $conn)
|
||||
{
|
||||
$this->conn = $conn;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Paramètre : tacheAInserer => Tache à enregistrer en base de données
|
||||
* Retour : True si la requete c'est correctement éxécuter. Sinon false
|
||||
* Finalité : Enregister en base de données une tache.
|
||||
*/
|
||||
public function inserer(Tache $tacheAInserer) : bool
|
||||
{
|
||||
$requette = "INSERT INTO _Tache(NomTache, TacheFaite, Commentaire) VALUES(
|
||||
:nom, :fait, :commentaire
|
||||
)";
|
||||
|
||||
return $this->conn->executeQuery($requette, [
|
||||
':nom' => [$tacheAInserer->nom, PDO::PARAM_STR],
|
||||
':fait'=> [$tacheAInserer->estFait, PDO::PARAM_BOOL],
|
||||
':commentaire' => [$tacheAInserer->commentaire, PDO::PARAM_STR],
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètre : tacheAModifier => Tache à éditer en base de données
|
||||
* Retour : True si la requete c'est correctement éxécuter. Sinon false
|
||||
* Finalité : Édite la tache <tacheAModifier> en base de données.
|
||||
*/
|
||||
public function modifier(Tache $tacheAModifier)
|
||||
{
|
||||
$requette = "UPDATE _Tache SET
|
||||
NomTache = :nom,
|
||||
Commentaire = :commentaire,
|
||||
TacheFaite = :fait
|
||||
WHERE
|
||||
tacheID = :id";
|
||||
return $this->conn->executeQuery($requette,[
|
||||
':nom' => [$tacheAModifier->nom, PDO::PRAM_STR],
|
||||
':commentaire' => [$tacheAModifier->commentaire, PDO::PARAM_STR],
|
||||
':fait' => [$tacheAModifier->estFait, PDO::PARAM_BOOL]
|
||||
]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètre : tacheASupprimer => Tache à supprimer en base de données
|
||||
* Retour : True si la requete c'est correctement éxécuter. Sinon false
|
||||
* Finalité : Supprime la tache <tacheASupprimer> en base de données.
|
||||
*/
|
||||
public function supprimer(Tache $tacheASupprimer)
|
||||
{
|
||||
$requette = "DELETE FROM _Tache WHERE tacheID=:id";
|
||||
return $this->conn->executeQuery($requette,
|
||||
[':id', [$tacheASupprimer->tacheID]]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Paramètre : l => Identifiant de la TodoList.
|
||||
* page => Numéro de la page à retourner
|
||||
* nbTache => Nombre de tache par page
|
||||
* Retour : Retourne les taches de la liste <l> par orde de nom de tache
|
||||
* Finalité : Récuperer les Taches d'une liste et les instancier
|
||||
*/
|
||||
public function getTachesParIDListe(int $l, int $page, int $nbTache) : iterable
|
||||
{
|
||||
$requete = "SELECT * FROM _Tache WHERE listID=:id ORDER BY NomTache LIMIT :p+:n, :n";
|
||||
if(!$this->conn->executeQuery($requete,[
|
||||
":id" => [$l->getID(), PDO::PARAM_INT],
|
||||
":p" => [$page-1, PDO::PARAM_INT],
|
||||
":n" => [$nbTache, PDO::PARAM_INT]
|
||||
]))
|
||||
{
|
||||
return array();
|
||||
}
|
||||
|
||||
$res = $this->conn->getResults();
|
||||
$taches = array();
|
||||
foreach($res as $tache)
|
||||
{
|
||||
$taches[] = new Tache(
|
||||
$tache["NomTache"],
|
||||
$tache["TacheFaite"],
|
||||
$tache["Commentaire"],
|
||||
$tache["tacheID"]
|
||||
);
|
||||
}
|
||||
return $taches;
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
class Compte
|
||||
{
|
||||
// Attributs
|
||||
private $pseudonyme;
|
||||
private $dateCreation;
|
||||
private $listes;
|
||||
private $motDePasse;
|
||||
|
||||
|
||||
//Constructeur
|
||||
public function __construct(string $nom, string $dateCreation=null, iterable $lists = array(), string $motDePasse)
|
||||
{
|
||||
$this->pseudonyme = $nom;
|
||||
$this->dateCreation = $dateCreation == null ? date("j/m/Y") : $dateCreation;
|
||||
$this->listes = $lists;
|
||||
$this->motDePasse = $motDePasse;
|
||||
}
|
||||
|
||||
//Accesseurs/Mutatteurs
|
||||
public function getPseudonyme() : string
|
||||
{
|
||||
return $this->pseudonyme;
|
||||
}
|
||||
|
||||
public function setPseudonyme(string $nouveauPseudonyme) : void
|
||||
{
|
||||
if(!empty($nouveauPseudonyme))
|
||||
{
|
||||
$this->pseudonyme = $nouveauPseudonyme;
|
||||
}
|
||||
}
|
||||
|
||||
public function getDateCreation()
|
||||
{
|
||||
return $this->dateCreation;
|
||||
}
|
||||
|
||||
public function getMotDePasse()
|
||||
{
|
||||
return $this->motDePasse;
|
||||
}
|
||||
|
||||
public function getListes()
|
||||
{
|
||||
return $this->listes;
|
||||
}
|
||||
|
||||
public function setListes(iterable $listes)
|
||||
{
|
||||
$this->listes = $listes;
|
||||
}
|
||||
|
||||
public function addListe(TodoList $l)
|
||||
{
|
||||
$this->listes[] = $l;
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
class Tache
|
||||
{
|
||||
// Attributs
|
||||
private $nom;
|
||||
private $fait;
|
||||
private $commentaire;
|
||||
private $tacheID;
|
||||
|
||||
// Constructeur
|
||||
public function __construct(string $nom, bool $estFait=false, string $commentaire="", int $tacheID)
|
||||
{
|
||||
$this->nom = $nom;
|
||||
$this->fait = $estFait;
|
||||
$this->commentaire = $commentaire;
|
||||
$this->tacheID = $tacheID;
|
||||
}
|
||||
|
||||
|
||||
// Accesseurs / Mutatteurs
|
||||
public function getNom() : string
|
||||
{
|
||||
return $this->nom;
|
||||
}
|
||||
|
||||
public function setNom(string $nouveauNom)
|
||||
{
|
||||
$this->nom = $nouveauNom;
|
||||
}
|
||||
|
||||
public function getCommentaire() : string
|
||||
{
|
||||
return $this->commentaire;
|
||||
}
|
||||
|
||||
public function setCommentaire(string $nouveauComm)
|
||||
{
|
||||
$this->commentaire = $nouveauComm;
|
||||
}
|
||||
|
||||
public function estFait() : bool
|
||||
{
|
||||
return $this->fait;
|
||||
}
|
||||
|
||||
public function setFait(bool $fait)
|
||||
{
|
||||
$this->fait = $fait;
|
||||
}
|
||||
|
||||
public function getID() : int
|
||||
{
|
||||
return $this->tacheID;
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
class TodoList
|
||||
{
|
||||
// Attrubuts
|
||||
private $nom;
|
||||
private $createur;
|
||||
private $dateCreation;
|
||||
private $id;
|
||||
private $taches;
|
||||
|
||||
|
||||
// Constructeurs
|
||||
public function __construct(int $id, string $nom, string $createur, string $dateCreation, iterable $taches)
|
||||
{
|
||||
$this->nom = $nom;
|
||||
$this->createur = $createur;
|
||||
$this->dateCreation = $dateCreation;
|
||||
$this->id = $id;
|
||||
$this->taches = $taches;
|
||||
}
|
||||
|
||||
|
||||
// Accesseurs / Mutatteurs
|
||||
public function getNom() : string
|
||||
{
|
||||
return $this->nom;
|
||||
}
|
||||
|
||||
public function getDateCreation() : string
|
||||
{
|
||||
return $this->dateCreation;
|
||||
}
|
||||
|
||||
|
||||
public function getCreateur() : string
|
||||
{
|
||||
return $this->createur;
|
||||
}
|
||||
|
||||
public function getID() : int
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
public function getTaches() : iterable
|
||||
{
|
||||
return $this->taches;
|
||||
}
|
||||
public function setTaches(array $taches)
|
||||
{
|
||||
$this->taches = $taches;
|
||||
}
|
||||
public function addTache(Tache $t)
|
||||
{
|
||||
$this->taches[] = $t;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue