<?php /** * Created by PhpStorm. * User: phoenix * Date: 25/04/16 * Time: 15:27 */ class PartieController extends Controller { public function displayStep0() { session_start(); if(isset($_SESSION['errMsg'])){ $this->view->errMsg = $_SESSION['errMsg']; unset($_SESSION['errMsg']); } $this->view->liste = Jeu::getList(); $this->view->display(); } public function displayStep1() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if(isset($_SESSION['errMsg'])){ $this->view->errMsg = $_SESSION['errMsg']; unset($_SESSION['errMsg']); } if ($_SESSION['jeu_select']->max_joueurs === "") $this->view->max = "plus"; else $this->view->max = $_SESSION['jeu_select']->max_joueurs; $this->view->jeuactuel = $_SESSION['jeu_select']; $this->view->listej = Profil::getList(); $this->view->display(); } public function displayStep2() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if (!isset($_SESSION['joueurs_select'])) { header("Location:../add_partie/step1"); die(); } if(isset($_SESSION['errMsg'])){ $this->view->errMsg = $_SESSION['errMsg']; unset($_SESSION['errMsg']); } $this->view->jeuactuel = $_SESSION['jeu_select']; $this->view->listejactuel = $_SESSION['joueurs_select']; $this->view->display(); } public function displayStepe1() { session_start(); if (!isset($_SESSION['jeu_select']) || !isset($_SESSION['equipes'])) { header("Location:../add_partie"); die(); } if(isset($_SESSION['errMsg'])){ $this->view->errMsg = $_SESSION['errMsg']; unset($_SESSION['errMsg']); } if (is_null($_SESSION['jeu_select']->max_joueurs)) { $this->view->maxj = "plus de"; } else { $this->view->maxj = $_SESSION['jeu_select']->max_joueurs; } if (is_null($_SESSION['jeu_select']->max_equipes)) { $this->view->maxe = "plus d'"; } else{ $this->view->maxe = $_SESSION['jeu_select']->max_equipes." "; } $this->view->jeuactuel = $_SESSION['jeu_select']; $this->view->listej = Profil::getList(); $this->view->equipes = $_SESSION['equipes']; $this->view->display(); } public function displayStepe2() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if (!isset($_SESSION['equipes'])) { header("Location:../add_partie/stepe1"); die(); } if(isset($_SESSION['errMsg'])){ $this->view->errMsg = $_SESSION['errMsg']; unset($_SESSION['errMsg']); } $this->view->jeuactuel = $_SESSION['jeu_select']; $this->view->equipes = $_SESSION['equipes']; $this->view->display(); } public function displayValid() { $this->view->display(); } private static function error($errstr, $step){ session_start(); $_SESSION['errMsg'] = $errstr; if($step == "step0") { header("Location:../add_partie"); die(); } else if($step == "step1") { header("Location:step1"); die(); } else if($step == "step2") { header("Location:step2"); die(); } else if($step == "stepe1") { header("Location:stepe1"); die(); } else if($step == "stepe2") { header("Location:stepe2"); die(); } else { header("Location:../add_partie"); die(); } } public static function verifyStep0() { if (!isset($_POST['jeu'])) { //appeler une fonction d'erreur self::error("<h1>Erreur : variables absentes</h1>", "step0"); die(); } $jeu = $_POST['jeu']; if (!Jeu::checkExistsNom($jeu)) { self::error("<h1>Erreur : le jeu entré est introuvable dans la BD.</h1>", "step0"); die(); } $jeu = Jeu::getFromNom($jeu); session_start(); $_SESSION['jeu_select'] = $jeu; if ($jeu->type == 'equipes') { $_SESSION['equipes'] = array(array()); header('Location:stepe1'); die(); } else { header('Location:step1'); die(); } } public static function addjoueurs1() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } $jeu = $_SESSION['jeu_select']; if (!isset($_POST["joueur"])) { if ($jeu->type == 'equipes') { self::error("<h1>Erreur : pas de joueur entré.</h1>", "stepe1"); die(); } else { self::error("<h1>Erreur : pas de joueur entré.</h1>", "step1"); die(); } } $joueur = $_POST["joueur"]; if (Profil::checkExists($joueur)) { $joueur_objet = Profil::getFromSlug($joueur); } else { if ($jeu->type == 'equipes') { self::error("<h1>Erreur : le joueur est introuvable dans la base de données.</h1>", "stepe1"); die(); } else { self::error("<h1>Erreur : le joueur est introuvable dans la base de données.</h1>", "step1"); die(); } } if ($jeu->type == 'equipes') { $ke = $_POST['equipejadd']; foreach ($_SESSION['equipes'] as $equipe) { if (in_array($joueur_objet, $equipe)) { self::error("<h1>Erreur : le joueur a déjà été inscrit pour cette partie.</h1>", "stepe1"); die(); } } array_push($_SESSION['equipes'][$ke], $joueur_objet); header("Location:stepe1"); die(); } else { if (!isset($_SESSION['joueurs_select'])) { $_SESSION['joueurs_select'] = array($joueur_objet); header("Location:step1"); die(); } if (!in_array($joueur_objet, $_SESSION['joueurs_select'])) array_push($_SESSION['joueurs_select'], $joueur_objet); else { self::error("<h1>Erreur : le joueur a déjà été inscrit pour cette partie.</h1>", "step1"); die(); } header("Location:step1"); die(); } } public static function clearstep1() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } $jeu_actuel = $_SESSION['jeu_select']; if ($jeu_actuel->type == 'equipes') { if (!isset($_SESSION['equipes'])) { header("Location:stepe1"); die(); } $_SESSION['equipes'] = array(array()); header("Location:stepe1"); die(); } else { if (!isset($_SESSION['joueurs_select'])) { header("Location:step1"); die(); } unset($_SESSION['joueurs_select']); header("Location:step1"); die(); } } public static function deljoueurs1() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if ($_SESSION['jeu_select']->type == 'duels') { if (!isset($_SESSION['joueurs_select'])) { header("Location:step1"); die(); } } if ($_SESSION['jeu_select']->type == 'equipes') { if (!isset($_SESSION['equipes'])) { header("Location:stepe1"); die(); } } if (!isset($_POST['joueurdel'])) { if ($_SESSION['jeu_select']->type == 'equipes') { self::error("<h1>Erreur : variables manquantes.</h1>", "stepe1"); die(); } else { self::error("<h1>Erreur : variables manquantes.</h1>", "step1"); die(); } } if ($_SESSION['jeu_select']->type == 'equipes') { unset($_SESSION['equipes'][$_POST['equipejdel']][$_POST['joueurdel']]); $equipe_tmp = array(); foreach ($_SESSION['equipes'][$_POST['equipejdel']] as $j) { array_push($equipe_tmp, $j); } $_SESSION['equipes'][$_POST['equipejdel']] = $equipe_tmp; header("Location:stepe1"); die(); } else { unset($_SESSION['joueurs_select'][$_POST['joueurdel']]); $joueurs_tmp = array(); foreach ($_SESSION['joueurs_select'] as $j) { array_push($joueurs_tmp, $j); } $_SESSION['joueurs_select'] = $joueurs_tmp; header("Location:step1"); die(); } } public static function delequipe() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if (!isset($_SESSION['equipes'])) { header("Location:stepe1"); die(); } if (count($_SESSION['equipes']) <= 1) { self::error("<h1>Erreur : vous ne pouvez pas supprimer la seule équipe restante.</h1>", "stepe1"); die(); } if (!isset($_POST['equipe'])) { self::error("<h1>Erreur : variables manquantes.</h1>", "stepe1"); die(); } unset($_SESSION['equipes'][$_POST['equipe']]); $equipe_tmp = array(); foreach ($_SESSION['equipes'] as $e) { array_push($equipe_tmp, $e); } $_SESSION['equipes'] = $equipe_tmp; header("Location:stepe1"); die(); } public static function addequipe() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } if (count($_SESSION['equipes']) == $_SESSION['jeu_select']->max_equipes) { self::error("<h1>Erreur : vous ne pouvez pas créer d'équipe supplémentaire.</h1>", "stepe1"); die(); } array_push($_SESSION['equipes'], array()); header("Location:stepe1"); die(); } public static function verifyStep1() { session_start(); if (!isset($_SESSION['jeu_select'])) { header("Location:../add_partie"); die(); } $jeu_actuel = $_SESSION['jeu_select']; if ($jeu_actuel->type == 'equipes') { if (!isset($_SESSION['equipes'])) { header("Location:stepe1"); die(); } $equipes = $_SESSION['equipes']; if (count($equipes) < $jeu_actuel->min_equipes) { self::error("<h1>Erreur : il n'y a pas assez d'équipes.</h1>", "stepe1"); die(); } if (count($equipes) > $jeu_actuel->max_equipes) { self::error("<h1>Erreur : il y a trop d'équipes.</h1>", "stepe1"); die(); } foreach ($equipes as $ke => $e) { if (count($e) < $jeu_actuel->min_joueurs) { $ke = $ke + 1; self::error("<h1>Erreur : il n'y a pas assez de joueurs dans l'équipe $ke.</h1>", "stepe1"); die(); } if (!is_null($jeu_actuel->max_joueurs)) { if (count($e) > $jeu_actuel->max_joueurs) { $ke = $ke + 1; self::error("<h1>Erreur : il y a trop de joueurs dans l'équipe $ke.</h1>", "stepe1"); die(); } } } header("Location:stepe2"); die(); } else { if (!isset($_SESSION['joueurs_select'])) { header("Location:step1"); die(); } $joueurs = $_SESSION['joueurs_select']; if (count($joueurs) < $jeu_actuel->min_joueurs) { self::error("<h1>Erreur : il n'y a pas assez de joueurs.</h1>", "step1"); die(); } if (count($joueurs) > $jeu_actuel->max_joueurs) { self::error("<h1>Erreur : il y a trop de joueurs.</h1>", "step1"); die(); } header('Location:step2'); die(); } } public function verifyStep2() { session_start(); if (!isset($_SESSION['jeu_select'])) { self::error("<h1>Erreur : le jeu doit être renseigné.</h1>", "step0"); die(); } $jeu = $_SESSION['jeu_select']; if ($jeu->type == 'equipes') { if (!isset($_SESSION['equipes'])) header("Location:stepe1"); die(); } else { if (!isset($_SESSION['joueurs_select'])) { header("Location:../add_partie/step1"); die(); } } if (!isset($_POST['scores'])) { if ($jeu->type == 'equipes') { self::error("<h1>Erreur : variables absentes</h1>", "stepe2"); die(); } else { self::error("<h1>Erreur : variables absentes</h1>", "step2"); die(); } } $scores = $_POST["scores"]; foreach ($scores as $s) { if (!is_numeric($s)) { if ($jeu->type == 'equipes') { self::error("<h1>Erreur : les scores doivent être des nombres.</h1>", "stepe2"); die(); } else { self::error("<h1>Erreur : les scores doivent être des nombres.</h1>", "step2"); die(); } } } if ($jeu->type == 'equipes') { $equipes = $_SESSION['equipes']; $ns = count($scores); $nj = count($equipes); if ($ns != $nj) { self::error("<h1>Erreur : scores et joueurs incohérents</h1>", "stepe2"); die(); } $pb = Partie::addPartie($equipes, $scores, $jeu); if (!$pb) { unset($_SESSION['equipes']); unset($_SESSION['jeu_select']); header('Location:valid'); // Redirection vers la page OK die(); } switch ($pb) { case 2: self::error("<h1>Erreur de connexion à la BD.</h1>", "stepe2"); die(); break; default: self::error("<h1>Erreur non gérée.</h1>", "stepe2"); die(); break; } } else { $joueurs = $_SESSION['joueurs_select']; $ns = count($scores); $nj = count($joueurs); if ($ns != $nj) { self::error("<h1>Erreur : scores et joueurs incohérents</h1>", "step2"); die(); } $pb = Partie::addPartie($joueurs, $scores, $jeu); if (!$pb) { unset($_SESSION['jeu_select']); unset($_SESSION['joueurs_select']); //self::error("<h1>DEBUGGING</h1>", "step2"); //die(); header('Location:valid'); // Redirection vers la page OK die(); } switch ($pb) { case 2: self::error("<h1>Erreur de connexion à la BD.</h1>", "step2"); die(); break; default: self::error("<h1>Erreur non gérée.</h1>", "step2"); die(); break; } } } }