de la suppression des engigmes de la bd + bloquage de l'accès aux énigme non autorisé + Sauvegarde du code du joeur + Modification du bouton SKIP pour qu'il renvoie vers la dernière énigme accesible par l'utilisateur + Ajout de flèche permettant de naviguer entre les énigmes accessibleServeurDeTest
parent
c9f0737d4d
commit
5c09c1c75f
@ -0,0 +1,172 @@
|
||||
<?php
|
||||
class ResoudreGateway
|
||||
{
|
||||
private Connection $con;
|
||||
|
||||
/**
|
||||
* @param Connection $con
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
global $dsn, $rep, $vues, $error;
|
||||
try {
|
||||
$con = new Connection($dsn);
|
||||
$this->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 deleteByEnigme(int $idEnigme){
|
||||
$query="DELETE FROM Resoudre WHERE enigme=:idEnigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"idEnigme" => array($idEnigme, SQLITE3_INTEGER)));
|
||||
}
|
||||
|
||||
public function resoudreEnigmeSolo(Utilisateur $utilisateur, int $enigmeId, int $partieId){
|
||||
$query="SELECT * FROM Resoudre
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($utilisateur->getEmail(), SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER)));
|
||||
$results=$this->con->getResults();
|
||||
if(empty($results))
|
||||
{
|
||||
$temps = 1;
|
||||
$code = "";
|
||||
$ended = false;
|
||||
$query="INSERT INTO Resoudre VALUES (:utilisateur, :enigme,:partie,:classement,:index,:temps,:code,:ended,:enMulti)";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($utilisateur->getEmail(), SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER),
|
||||
"partie" => array($partieId, SQLITE3_INTEGER),
|
||||
"classement" => array(NULL, SQLITE3_NULL),
|
||||
"index" => array(NULL, SQLITE3_NULL),
|
||||
"temps" => array($temps, SQLITE3_FLOAT),
|
||||
"code" => array($code, SQLITE3_TEXT),
|
||||
"ended" => array($ended, SQLITE3_INTEGER),
|
||||
"enMulti" => array(0, SQLITE3_INTEGER)));
|
||||
}
|
||||
else
|
||||
{
|
||||
$query = "SELECT * FROM Resoudre WHERE utilisateur=:utilisateur AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($utilisateur->getEmail(), SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER)));
|
||||
$results = $this->con->getResults();
|
||||
$temps = $results[0]['temps'];
|
||||
$code = $results[0]['code'];
|
||||
$ended = $results[0]['ended'];
|
||||
$query="UPDATE Resoudre
|
||||
SET temps=:temps, code=:code, ended=:ended
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($utilisateur->getEmail(), SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER),
|
||||
"temps" => array($temps, SQLITE3_FLOAT),
|
||||
"code" => array($code, SQLITE3_TEXT),
|
||||
"ended" => array($ended, SQLITE3_INTEGER)));
|
||||
}
|
||||
}
|
||||
public function checkEnigmeIsEnded(string $mailUtilisateur, int $enigmeId){
|
||||
$query="SELECT * FROM Resoudre
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($mailUtilisateur, SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER)));
|
||||
$results=$this->con->getResults();
|
||||
if(empty($results))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $results[0]['ended'];
|
||||
}
|
||||
}
|
||||
|
||||
public function checkPartieIsAlreadyCreate(int $enigmeId) : bool{
|
||||
$query="SELECT * FROM Resoudre
|
||||
WHERE enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER)));
|
||||
$results=$this->con->getResults();
|
||||
if(empty($results))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public function enigmeEnded(string $mailUtilisateur, int $enigmeId){
|
||||
$query="UPDATE Resoudre
|
||||
SET ended=:ended
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($mailUtilisateur, SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER),
|
||||
"ended" => array(1, SQLITE3_INTEGER)));
|
||||
}
|
||||
|
||||
public function saveCode(string $mailUtilisateur, int $enigmeId, string $code){
|
||||
$query="UPDATE Resoudre
|
||||
SET code=:code
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($mailUtilisateur, SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER),
|
||||
"code" => array($code, SQLITE3_TEXT)));
|
||||
}
|
||||
public function getCode(string $mailUtilisateur, int $enigmeId) : string{
|
||||
$query="SELECT * FROM Resoudre
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND enigme=:enigme";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($mailUtilisateur, SQLITE3_TEXT),
|
||||
"enigme" => array($enigmeId, SQLITE3_INTEGER)));
|
||||
$results=$this->con->getResults();
|
||||
if(empty($results))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
return $results[0]['code'];
|
||||
}
|
||||
}
|
||||
|
||||
public function getLastEnigmeEnded(string $mailUtilisateur) : int{
|
||||
$query="SELECT * FROM Resoudre
|
||||
WHERE utilisateur=:utilisateur
|
||||
AND ended=:ended
|
||||
ORDER BY ended DESC LIMIT 1";
|
||||
// $query = "SELECT * FROM Partie ORDER BY id DESC LIMIT 1";
|
||||
$this->con->executeQuery($query, array(
|
||||
"utilisateur" => array($mailUtilisateur, SQLITE3_TEXT),
|
||||
"ended" => array(1, SQLITE3_INTEGER)));
|
||||
$results=$this->con->getResults();
|
||||
if(empty($results))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $results[0]['enigme'];
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
//~ Function that test the user code
|
||||
|
||||
async function submit(){
|
||||
var test = editor.getValue()+`\n
|
||||
ba
|
||||
R
|
||||
`;
|
||||
exec("print ('True')", "code");
|
||||
exec(test, "solution");
|
||||
result.innerHTML = "Test en cours...";
|
||||
await new Promise(r => setTimeout(r, 1500));
|
||||
check();
|
||||
}
|
Loading…
Reference in new issue