con = $con; } catch (Exception $e) { $error = $e->getMessage(); require($rep . $vues['erreur']); } } /** * @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]["partie"]; $query="SELECT e.id, c2.indexEnigme 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 c.enigme, c.indexEnigme FROM Contenir c WHERE c.partie = :idPartie AND c.indexEnigme = 0"; $results=$this->con->getResults(); } $idEnigme=$results[0]["enigme"]; $index=$results[0]["indexEnigme"]; $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]["max"]+1; $query="SELECT * FROM Resoudre WHERE r.joueur=:joueur AND r.enigme=:idEnigme AND r.partie=:idPartie"; $this->con->executeQuery($query, array( "joueur" => array($emailUtilisateur, SQLITE3_TEXT), "enigme" => array($idEnigme, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER))); $results=$this->con->getResults(); if(empty($results)) { $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_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER), "index" => array($index, SQLITE3_INTEGER), "temps" => array($temps, SQLITE3_FLOAT))); return array($emailUtilisateur => array($points,$temps)) } else { $query="UPDATE Resoudre SET classement=:classement; WHERE joueur=:joueur AND enigme=:idEnigme AND partie=:idPartie"; $this->con->executeQuery($query, array( "joueur" => array($emailUtilisateur, SQLITE3_TEXT), "enigme" => array($idEnigme, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER))); return array(); } }*/ public function passerEnigmeMulti(string $emailUtilisateur){ $query="SELECT p.partie FROM Participer WHERE p.joueur = :emailUtilisateur and p.enCours = TRUE"; $this->con->executeQuery($query, array( ':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT) )); $idPartie=$this->con->getResults()[0]["partie"]; $query="SELECT e.id, c2.indexEnigme 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 r.enigme=c1.enigme AND r.partie = c1.partie AND r.partie = c2.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 c.enigme, c.indexEnigme FROM Contenir c WHERE c.partie = :idPartie AND c.indexEnigme = 0"; $results=$this->con->getResults(); $idEnigme=$results[0]["enigme"]; $index=$results[0]["indexEnigme"]; $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_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER), "classement" => array(NULL, SQLITE3_NULL), "index" => array($index, SQLITE3_INTEGER), "temps" => array($emailUtilisateur, SQLITE3_FLOAT))); } public function resoudreEnigmeSolo(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]["partie"]; $query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE r.id = :idPartie AND r.joueur=:idJoueur AND r.partie=:idPartie AND r.enigme = c1.enigme AND c1.partie = r.partie AND c2.partie = r.partie AND c2.index=c1.index + 1 AND e.id = c2.enigme AND r.indexEnigme = (SELECT max(r.indexEnigme))"; $results=$this->con->getResults(); if(empty($results)) { $query="SELECT c.enigme, c.indexEnigme FROM Contenir c WHERE c.partie = :idPartie AND c.indexEnigme = 0"; $results=$this->con->getResults(); } $idEnigme=$results[0]["enigme"]; $index=$results[0]["indexEnigme"]; $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]["max"]+1; $query="SELECT * FROM Resoudre WHERE r.joueur=:joueur AND r.enigme=:idEnigme AND r.partie=:idPartie"; $this->con->executeQuery($query, array( "joueur" => array($emailUtilisateur, SQLITE3_TEXT), "enigme" => array($idEnigme, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER))); $results=$this->con->getResults(); if(empty($results)) { $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_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER), "index" => array($index, SQLITE3_INTEGER), "temps" => array($emailUtilisateur, SQLITE3_FLOAT))); } else { $query="UPDATE Resoudre SET classement=:classement; WHERE joueur=:joueur AND enigme=:idEnigme AND partie=:idPartie"; $this->con->executeQuery($query, array( "joueur" => array($emailUtilisateur, SQLITE3_TEXT), "enigme" => array($idEnigme, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER))); } } 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'] . '
'; } } }