con = $con; } /** * @param Connection $con */ public function setCon(Connection $con): void { $this->con = $con; } public function insert(Utilisateur $utilisateur) : void{ $query = "INSERT INTO Utilisateur VALUE (:email,:pseudo,:mdp,:estAdmin)"; $this->con->executeQuery($query, array( ':email' => array($utilisateur->getEmail(),PDO::PARAM_STR), ':pseudo' => array($utilisateur->getPseudo(),PDO::PARAM_STR), ':mdp' => array($utilisateur->getMdp(),PDO::PARAM_STR), ':estAdmin' => array($utilisateur->getEstAdmin(),PDO::PARAM_BOOL))); } public function delete(string $email) : void{ $query = "DELETE FROM utilisateur WHERE email=:email"; $this->con->executeQuery($query, array( ':email' => array($email ,PDO::PARAM_STR) )); } public function getUtilisateurByEmail(string $email) : Utilisateur{ global $error; $query = "SELECT * FROM Utilisateur WHERE email=:email"; $this->con->executeQuery($query, array( ':email' => array($email,PDO::PARAM_STR) )); $results=$this->con->getResults(); foreach ($results as $row) { $email=$row['email']; $pseudo=$row['pseudo']; $mdp=$row['mdp']; $estAdmin=$row['estAdmin']; } if ($results == null){ return new Utilisateur("null", "null", "null", false); } return new Utilisateur($email, $pseudo, $mdp,false); } public function getMdpByEmail(string $email) : string{ global $error; $query = "SELECT mdp FROM Utilisateur WHERE email=:email"; $this->con->executeQuery($query, array( ':email' => array($email,PDO::PARAM_STR) )); $results=$this->con->getResults(); foreach ($results as $row) { $mdp=$row['mdp']; } if ($results == null){ $error = "Mot de passe non trouvé."; throw new Exception("Mots de passe Incorrect"); } return $mdp; } public function getEstAdminByEmail(string $email) : bool{ $query = "SELECT estAdmin FROM Utilisateur WHERE email=:email"; $this->con->executeQuery($query, array( ':email' => array($email,PDO::PARAM_STR) )); $results=$this->con->getResults(); foreach ($results as $row) { $estAdmin=$row['estAdmin']; } return $estAdmin; } public function resoudreEnigmeMulti(string $emailUtilisateur) { $query="SELECT c.partie FROM Contenir WHERE c.joueur = :emailUtilisateur and c.enCours = TRUE"; $this->con->executeQuery($query, array( ':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT) )); $idPartie=$this->con->getResults()[0]; $query="SELECT e.id FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE r.id = :idPartie AND r.joueur=:idJoueur AND r.partie=:idPartie AND r.temps IS NOT NULL AND c1.partie = r.partie AND c2.index=c1.index + 1 AND e.id = c1.enigme AND r.temps = (SELECT max(r.temps))"; $results=$this->con->getResults(); if(empty($results)) $query="SELECT enigme FROM Contenir WHERE c.partie = :idPartie AND c.indexEnigme = 0"; $results=$this->con->getResults(); $idEnigme=$results[0]; $query="SELECT max(classement) FROM Enigme e,Partie p, Resoudre r WHERE p.id=r.partie; AND e.id=r.enigme"; $this->con->executeQuery($query); $results=$this->con->getResults(); if(empty($results)) $classement=1; else $classement=$results[0]+1; $query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,:classement,:index,:temps,TRUE)"; $this->con->executeQuery($query, array( "joueur" => array($emailUtilisateur, SQLITE3_TEXT), "enigme" => array($idEnigme, SQLITE3_TEXT), "partie" => array($idPartie, SQLITE3_TEXT), "classement" => array($classement, SQLITE3_INTEGER), "index" => array(, SQLITE3_INTEGER), "temps" => array($emailUtilisateur, SQLITE3_FLOAT))); } public function resoudreEnigmeSolo(string $emailUtilisateur, int $idEnigme, int $idPartie) { $query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,NULL,:index,:temps,False)"; } public function showAll() : void{ $query = "SELECT * FROM Utilisateur"; $this->con->executeQuery($query); $results=$this->con->getResults(); foreach ($results as $row) { echo $row['email'] . '
'; echo $row['pseudo'] . '
'; echo $row['mdp'] . '
'; echo $row['estAdmin'] . '
'; } } }