Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 97e9fc31bcb9a8ad3ffb6d703fc99bf6d62a88af
  • master par défaut protégée
  • dev
  • dev-admin
  • migration-pg
  • dev-partie
  • dev-deplacement-msg-erreurs
  • dev-jeux-favoris
  • dev-update-forms
  • dev-header-profil-deconnexion
  • dev-contact
  • dev_page_accueil
  • dev-edit-profil
  • dev-classement
  • dev_espace_membre
  • dev-images
  • javascript_valid_form
  • application_design_views
  • dev-table
  • dev-nestor
20 résultats

PartieController.php

Blame
  • 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;
                }
            }
        }
    }