Sélectionner une révision Git
PartieController.php
-
Eliah REBSTOCK a rédigéEliah REBSTOCK a rédigé
PartieController.php 15,34 Kio
<?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: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;
}
}
}
}