You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
257 lines
8.4 KiB
257 lines
8.4 KiB
<?php
|
|
class UserController
|
|
{
|
|
function __construct()
|
|
{
|
|
try {
|
|
global $dsn, $rep, $vues, $error;
|
|
$action = $_REQUEST['action'];
|
|
switch ($action) {
|
|
case NULL:
|
|
$this->goToHome();
|
|
break;
|
|
case "goToHome":
|
|
$this->goToHome();
|
|
break;
|
|
case "goToPresentation":
|
|
$this->goToPresentation();
|
|
break;
|
|
case "goToSolo":
|
|
$this->goToSolo();
|
|
break;
|
|
case "goToEnigme":
|
|
$this->goToEnigme();
|
|
break;
|
|
case "goToTest":
|
|
$this->goToTest();
|
|
break;
|
|
case "goToNext":
|
|
$this->goToNext();
|
|
break;
|
|
case "enigmeEnded":
|
|
$this->enigmeEnded();
|
|
break;
|
|
case "goToQueue":
|
|
$this->goToQueue();
|
|
break;
|
|
case "queuing":
|
|
$this->queuing();
|
|
break;
|
|
case "logout":
|
|
$this->logout();
|
|
break;
|
|
case "launchGame":
|
|
$this->launchGame();
|
|
break;
|
|
case "saveCode":
|
|
$this->saveCode();
|
|
break;
|
|
case "saveCodeInCookie":
|
|
$this->saveCodeInCookie();
|
|
break;
|
|
default:
|
|
$error = "Action non valide";
|
|
require($rep . $vues['erreur']);
|
|
break;
|
|
}
|
|
} catch (PDOException $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
} catch (Exception $e2) {
|
|
$error = $e2->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToHome()
|
|
{
|
|
try {
|
|
global $rep, $vues;
|
|
require($rep . $vues['main']);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToPresentation()
|
|
{
|
|
try {
|
|
global $rep, $vues;
|
|
require($rep . $vues['presentation']);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToSolo()
|
|
{
|
|
try {
|
|
global $rep, $vues;
|
|
$model = new UserModel();
|
|
$utilisateur = $_SESSION['utilisateur'];
|
|
$enigme = $model->getLastEnigmeEnded($utilisateur->getEmail());
|
|
header("Location: index.php?action=goToEnigme&ordre=" . $enigme->getOrdre());
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToTest()
|
|
{
|
|
try {
|
|
global $rep, $vues;
|
|
require($rep . $vues['test']);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToEnigme()
|
|
{
|
|
try {
|
|
global $rep, $vues;
|
|
$model = new UserModel();
|
|
$ordre = $_REQUEST['ordre'];
|
|
$enigme = $model->getEnigmeByOrdre($ordre);
|
|
if ($enigme->getNom() == "") {
|
|
header("Location: index.php?action=goToHome");
|
|
}
|
|
$utilisateur=$_SESSION['utilisateur'];
|
|
if ($ordre != 1){
|
|
$lastEnigme = $model->getEnigmeByOrdre($ordre-1);
|
|
if(! $model->checkEnigmeIsEnded($utilisateur->getEmail(), $lastEnigme->getIdEnigme())){
|
|
header("Location: index.php?action=goToEnigme&ordre=".($ordre-1));
|
|
}
|
|
else{
|
|
$model->resoudreEnigmeSolo($utilisateur, $enigme->getIdEnigme());
|
|
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
|
|
require($rep . $vues['enigmePage']);
|
|
}
|
|
}
|
|
elseif($model->checkEnigmeIsEnded($utilisateur->getEmail(), $enigme->getIdEnigme())){
|
|
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
|
|
require($rep . $vues['enigmePage']);
|
|
}
|
|
else {
|
|
$model->resoudreEnigmeSolo($utilisateur, $enigme->getIdEnigme());
|
|
$code = $model->getCode($utilisateur->getEmail(), $enigme->getIdEnigme());
|
|
require($rep . $vues['enigmePage']);
|
|
}
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function goToNext()
|
|
{
|
|
try {
|
|
global $rep, $vues, $error;
|
|
$nettoyage = new Nettoyage();
|
|
$num = $nettoyage->cleanInt($_REQUEST['num']);
|
|
require($rep . $vues['next'] . $num . ".php");
|
|
} catch (Exception $e) {
|
|
$error = "Erreur Inconnue";
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function enigmeEnded(){
|
|
try {
|
|
global $rep, $vues;
|
|
$model = new UserModel();
|
|
$ordre = $_REQUEST['ordre'];
|
|
$enigme = $model->getEnigmeByOrdre($ordre);
|
|
$utilisateur=$_SESSION['utilisateur'];
|
|
$model->enigmeEnded($utilisateur->getEmail(),$enigme->getIdEnigme());
|
|
$_REQUEST['ordre'] = $ordre + 1;
|
|
header("Location: index.php?action=goToEnigme&ordre=" . $_REQUEST['ordre']);
|
|
} catch (Exception $e) {
|
|
$error = "Erreur Inconnue";
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
|
|
}
|
|
public function goToQueue()
|
|
{
|
|
try {
|
|
global $rep, $vues, $error;
|
|
require($rep . $vues['queue']);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function queuing(){
|
|
try {
|
|
global $rep, $vues, $error;
|
|
$model = new UserModel();
|
|
$utilisateur = $_SESSION['utilisateur'];
|
|
$reponse = $model->addToQueue($utilisateur->getEmail());
|
|
$etat = $reponse[1];
|
|
echo $etat. " etat\n";
|
|
$idPartie = $reponse[0];
|
|
echo $idPartie . " idPartie\n";
|
|
if($etat == 1){
|
|
// header("Location: index.php?action=launchGame");
|
|
header("Location: index.php?action=goToPresentation");
|
|
}
|
|
else{
|
|
while ($etat == 0){
|
|
sleep(5);
|
|
$etat = $model->getEtatPartie($idPartie);
|
|
}
|
|
header("Location: index.php?action=goToPresentation");
|
|
}
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function launchGame(){
|
|
try {
|
|
global $rep, $vues, $error;
|
|
$model = new UserModel();
|
|
$model->launchGame();
|
|
require($rep . $vues['partie']);
|
|
}
|
|
catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function logout()
|
|
{
|
|
$_SESSION['role'] = 'visitor';
|
|
header('Location: index.php');
|
|
}
|
|
|
|
|
|
public function saveCode(){
|
|
try {
|
|
global $rep, $vues, $error;
|
|
$model = new UserModel();
|
|
$code = $_POST['code'];
|
|
$ordre = $_POST['ordre'];
|
|
$enigme = $model->getEnigmeByOrdre($ordre);
|
|
$utilisateur=$_SESSION['utilisateur'];
|
|
$model->saveCode($utilisateur->getEmail(),$enigme->getIdEnigme(),$code);
|
|
echo $code;
|
|
}
|
|
catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
public function saveCodeInCookie(){
|
|
try {
|
|
global $rep, $vues, $error;
|
|
$model = new UserModel();
|
|
$code = $_POST['code'];
|
|
$num = $_POST['num'];
|
|
setcookie("test".$num, $code, time() + 3600*24*365);
|
|
echo $code;
|
|
}
|
|
catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $vues['erreur']);
|
|
}
|
|
}
|
|
} |