Merge branch 'master' of https://codefirst.iut.uca.fr/git/nathan.boileau/Scripted
continuous-integration/drone/push Build is passing Details

ServeurDeTest
nathan boileau 2 years ago
commit 189ecb7408

@ -13,12 +13,18 @@ $sel = "JeSuisUnSeldeHashageEtJeSuisUniqueEtTresSecuriseEtJeSuisTresLong";
//Page
$vues['main'] = 'View/src/pages/Main.php';
$vues['presentation'] = 'View/src/pages/Presentation.html';
//LogSign
$vues['login'] = 'View/src/pages/LogSign/Login.php';
$vues['signUp'] = 'View/src/pages/LogSign/SignUp.php';
$vues['mail'] = 'View/src/pages/LogSign/Mail.php';
$vues['confirm'] = 'View/src/pages/LogSign/Confirm.php';
//Test
$vues['test'] = 'View/src/pages/FirstTests/FirstTest1.php';
$vues['next'] = 'View/src/pages/FirstTests/FirstTest';
//Admin
$vues['admin'] = 'View/src/pages/Admin/Admin.php';
$vues['addEnigmeSolo'] = 'View/src/pages/Admin/AddEnigmeSolo.php';
$vues['enigmeMultiManager'] = 'View/src/pages/Admin/EnigmeMultiManager.php';
@ -28,20 +34,26 @@ $vues['modifEnigmeSolo'] = 'View/src/pages/Admin/ModifEnigmeSolo.php';
$vues['adminSolo'] = 'View/src/pages/Admin/AdminSolo.php';
$vues['seeOrdre'] = 'View/src/pages/Admin/SeeOrdre.php';
$vues['modifOrdre'] = 'View/src/pages/Admin/ModifOrdre.php';
//Mulijoueur
$vues['partie'] = 'View/src/pages/Multijoueur/Partie.php';
$vues['queue'] = 'View/src/pages/Multijoueur/FileAttente.php';
$vues['gameEnd'] = 'View/src/pages/Multijoueur/GameEnd.php';
// Enigme
$vues['enigmePage'] = 'View/src/pages/Enigme/EnigmePage.php';
//Error
$vues['erreur'] = 'View/src/pages/Erreur.php';
$error = "";
// Server
$BUFFER_SIZE = 1024;
$serverAdress = "82.165.180.114";
$port= "3000";
$playerNumberPerGame = 2;
//modules
// Modules
$modules = 'node_module/';
//Error
$vues['erreur'] = 'View/src/pages/Erreur.php';
$error = "";

@ -159,6 +159,14 @@ class EnigmeGateway
$tabEnigme=EnigmeFactory::create($results);
return $tabEnigme;
}
public function getLastOrdre() : int
{
$query = "SELECT ordre FROM Enigme ORDER BY ordre DESC LIMIT 1";
$this->con->executequery($query);
$results = $this->con->getResults();
return $results[0]['ordre'];
}
public function findByOrdre(int $ordre) : array
{
$query = "SELECT * FROM Enigme WHERE ordre = :ordre";

@ -14,18 +14,15 @@ class FrontController
$role = "visitor";
}
// Check if action exists
//echo "FrontConroller : action = " . $_REQUEST['action'] . "<br>";
//echo "role = " . $role . "<br>";
$action = $nettoyage->clean($_REQUEST['action']);
if ($role == "user") {
if ($action == NULL) {
$_REQUEST['action'] = $action;
new UserController();
} else if (method_exists('UserController', $action) == false) {
$error = "Action non valide " . $action;
$error = "Action non valide ";
require($rep . $vues['erreur']);
} else {
//echo "action user valide";
$_REQUEST['action'] = $action;
new UserController();
}
@ -35,15 +32,13 @@ class FrontController
$_REQUEST['action'] = $action;
new AdminController();
} else if (method_exists('AdminController', $action) == false) {
$error = "Action non valide" . $action;
$error = "Action non valide";
require($rep . $vues['erreur']);
} else {
//echo "action admin valide";
$_REQUEST['action'] = $action;
new AdminController();
}
} else {
//echo "action visiteur";
$_REQUEST['action'] = $action;
new VisitorController();
}

@ -152,7 +152,7 @@ class PartieGateway
);
}
public function createPartieMulti(Enigme $enigme, string $mailUtilisateur)
public function createPartieMulti(array $lesEnigmes, string $mailUtilisateur)
{
$query = "INSERT INTO Partie VALUES (NULL,:date)";
$currentDate = date('Y-m-d H:i:s');
@ -161,12 +161,17 @@ class PartieGateway
)
);
$partie = $this->findLastPartie();
$tpsMaxPartie = 0;
$query = "INSERT INTO Contenir VALUES (:partie,:idEnigme,1)";
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
"idEnigme" => array($enigme->getIdEnigme(), SQLITE3_INTEGER)
)
);
foreach ($lesEnigmes as $enigme) {
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
"idEnigme" => array($enigme->getIdEnigme(), SQLITE3_INTEGER)
)
);
$tpsMaxPartie += $enigme->getTempsDeResolution();
}
$_SESSION['tpsMaxPartie'] = $tpsMaxPartie;
$query = "INSERT INTO Participer VALUES (:partie,:utilisateur,0)";
$this->con->executeQuery($query, array(
"partie" => array($partie->getIdPartie(), SQLITE3_INTEGER),
@ -314,18 +319,16 @@ class PartieGateway
$results = $this->con->getResults();
$row = $results[0];
return $row['enigme'];
}
public function getIndex(int $idPartie, int $idEnigme){
$query = "SELECT * FROM Contenir WHERE partie = :idPartie AND enigme = :idEnigme";
public function getDateDebut($idPartie) : DateTime{
$query = "SELECT dateDebut FROM Partie WHERE id = :idPartie";
$this->con->executeQuery($query, array(
"idPartie" => array($idPartie, SQLITE3_INTEGER),
"idEnigme" => array($idEnigme, SQLITE3_INTEGER)
"idPartie" => array($idPartie, SQLITE3_INTEGER)
)
);
$results = $this->con->getResults();
$row = $results[0];
return $row['indexEnigme'];
$date = new DateTime ($results[0]['dateDebut']);
return $date;
}
public function showAll(): void
{

@ -229,5 +229,16 @@ class ResoudreGateway
{
return $results[0]['enigme'];
}
}
}
public function getLastIndex(int $idPartie) : int{
$query="SELECT max(indexEnigme) FROM Resoudre
WHERE partie=:partie";
$this->con->executeQuery($query, array(
"partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults();
if (empty($results) || $results[0]['max(indexEnigme)'] == null) {
return 0;
}
return $results[0]['max(indexEnigme)'];
}
}

@ -34,6 +34,9 @@ class UserController
case "enigmeEnded":
$this->enigmeEnded();
break;
case "enigmeMultiEnded":
$this->enigmeMultiEnded();
break;
case "goToQueue":
$this->goToQueue();
break;
@ -168,12 +171,32 @@ class UserController
$utilisateur=$_SESSION['utilisateur'];
$model->enigmeEnded($utilisateur->getEmail(),$enigme->getIdEnigme());
$_REQUEST['ordre'] = $ordre + 1;
header("Location: index.php?action=goToEnigme&ordre=" . $_REQUEST['ordre']);
$lastOrdre = $model->getLastOrdre();
if ($_REQUEST['ordre'] = $lastOrdre) {
$this->goToHome();
}
else {
header("Location: index.php?action=goToEnigme&ordre=" . $_REQUEST['ordre']);
}
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function enigmeMultiEnded(){
try {
global $rep, $vues;
$model = new UserModel();
$index = $_REQUEST['index'];
$enigme = $model->getEnigmebyPartieIdAndIndex($_SESSION['idPartie'],$index);
$utilisateur=$_SESSION['utilisateur'];
$model->enigmeEnded($utilisateur->getEmail(),$enigme->getIdEnigme());
$index = $index + 1;
header("Location: index.php?action=goToGame&idPartie=" . $_SESSION['idPartie'] . "&index=". $index);
} catch (Exception $e) {
$error = "Erreur Inconnue";
require($rep . $vues['erreur']);
}
}
public function goToQueue()
{
@ -218,10 +241,17 @@ class UserController
$utilisateur = $_SESSION['utilisateur'];
$idPartie = $_GET['idPartie'];
$index = $_GET['index'];
$enigme = $model->getEnigmebyPartieIdAndIndex($idPartie, $index);
$model->resoudreEnigmeMulti($utilisateur, $enigme->getIdEnigme(), $idPartie, $index);
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
require($rep . $vues['partie']);
$lastIndex = $model->getLastIndex($idPartie);
if($lastIndex != 0 && $index == $lastIndex + 1){
$dateDebut = $model->getDateDebut($idPartie);
require($rep . $vues['gameEnd']);
}
else{
$enigme = $model->getEnigmebyPartieIdAndIndex($idPartie, $index);
$model->resoudreEnigmeMulti($utilisateur, $enigme->getIdEnigme(), $idPartie, $index);
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
require($rep . $vues['partie']);
}
} catch (Exception $e) {
$error = $e->getMessage();
require($rep . $vues['erreur']);

@ -41,7 +41,7 @@ class VisitorController
$this->goToReset();
break;
default:
$error = "Action non valide";
$error = "Action non valide. Pour accéder à cette page, vous devez peut être vous connecter";
require($rep . $vues['erreur']);
break;
}

@ -29,7 +29,8 @@ class UserModel
$idPartie=$this->partie_gateway->findPartieInQueue();
if ($idPartie == 0){
$enigme= $this->enigme_gateway->getRandomEnigme();
$this->partie_gateway->createPartieMulti($enigme, $mailUtilisateur);
$lesEnigmes = array($enigme);
$this->partie_gateway->createPartieMulti($lesEnigmes, $mailUtilisateur);
$idPartie=$this->partie_gateway->findPartieInQueue();
$etat=$this->partie_gateway->getEtat($idPartie);
return array($idPartie, $etat);
@ -135,11 +136,19 @@ class UserModel
return $this->enigme_gateway->findById($idEnigme)[0];
}
public function getIndex($mailUtilisateur, $idPartie){
return $this->partie_gateway->getIndex($idPartie, $mailUtilisateur);
}
public function findEnigmeById(int $enigmeId) : Engine{
return $this->enigme_gateway->findById($enigmeId)[0];
}
public function getLastIndex(int $idPartie) : int{
return $this->resoudre_gateway->getLastIndex($idPartie);
}
public function getLastOrdre() :int {
return $this->enigme_gateway->getLastOrdre();
}
public function getDateDebut($idPartie) : DateTime{
return $this->partie_gateway->getDateDebut($idPartie);
}
}

@ -0,0 +1,65 @@
<!doctype html>
<html lang="en">
<head>
<title>GameEnd</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<h1>Lobby de fin de partie</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<p>Vous avez terminer toute les énimges.</p>
<p>Temps restant avant la fin de la partie :</p>
<?php
$end_time = $dateDebut->modify('+'. $_SESSION['tpsMaxPartie'] .'minutes');
$now = new DateTime();
$interval = $now->diff($end_time);
$remaining_seconds = $interval->days * 24 * 60 * 60 + $interval->h * 60 * 60 + $interval->i * 60 + $interval->s;
?>
<div id="countdown"></div>
</div>
</div>
</div>
<script>
var seconds = <?php echo $remaining_seconds; ?>;
function countdown() {
var days = Math.floor(seconds/24/60/60);
var hoursLeft = Math.floor((seconds) - (days*86400));
var hours = Math.floor(hoursLeft/3600);
var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
var minutes = Math.floor(minutesLeft/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = days + " jours " + hours + " heures " + minutes + " minutes " + remainingSeconds + " secondes";
if (seconds == 0) {
clearInterval(countdown);
document.getElementById('countdown').innerHTML = "Expired";
} else {
seconds--;
}
}
var countdownTimer = setInterval('countdown()', 1000);
</script>
<!-- Bootstrap JavaScript Libraries -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js"
integrity="sha384-oBqDVmMz9ATKxIep9tiCxS/Z9fNfEXiDAYTujMAeBAsjFuCZSmKbSSUnQlmh/jp3" crossorigin="anonymous">
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.min.js"
integrity="sha384-7VPbUDkoPSGFnVtYi0QogXtr74QeVeeIs99Qfg5YCF+TidwNdjvaKZX19NZ/e6oz" crossorigin="anonymous">
</script>
</body>
</html>

@ -150,7 +150,7 @@
<div class="modal-footer">
<a
<?php
echo 'href="index.php?';
echo 'href="index.php?action=enigmeMultiEnded&index=' . $index .'"';
?>
class="btn" style="display: none" id="next"
>

Loading…
Cancel
Save