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.
217 lines
7.1 KiB
217 lines
7.1 KiB
<?php
|
|
require_once('./Client/Client.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 "logout":
|
|
$this->logout();
|
|
break;
|
|
case "launchGame":
|
|
$this->launchGame();
|
|
break;
|
|
case "saveCode":
|
|
$this->saveCode();
|
|
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 . ".html");
|
|
} 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; //$serverAdress,$port;
|
|
require($rep . $vues['queue']);
|
|
$model = new UserModel();
|
|
$model->addToQueue();
|
|
$client = Client::getInstance();
|
|
$client->Queuing();
|
|
header('Location: index.php?action=launchGame');
|
|
} 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']);
|
|
}
|
|
}
|
|
} |