Sélectionner une révision Git
AdminController.php 20,25 Kio
<?php
include(ROOT."/Image.php");
class AdminController extends Controller {
public function display() {
$this->view->display();
}
public function displayJeu() {
$this->view->nonValide = Admin::getListeJeuNonValide();
$this->view->Valide = Admin::getListeJeuValide();
$this->view->display();
}
public function acceptJeu() {
$slug = $this->route["params"]["slug"];
if(Admin::acceptJeu($slug)) {
header("Location:valide/ok");
} else {
session_start();
$_SESSION['adminErr'] = 1;
header("Location:../../jeu");
}
}
public function displayAcceptJeuOK() {
$this->view->display();
}
public function displayModifPartieOK() {
$this->view->display();
}
public function supprimeJeu() {
$slug = $this->route["params"]["slug"];
Admin::supprJeu($slug);
unlink(ROOT."/www/images/jeu/".$slug.".jpg");
header("Location:supprime/ok");
}
public function displaySupprimeJeuOK() {
$this->view->display();
}
public function unAcceptJeu() {
$slug = $this->route["params"]["slug"];
if(Admin::unacceptJeu($slug)) {
header("Location:unvalide/ok");
} else {
session_start();
$_SESSION['adminErr'] = 1;
header("Location:../../jeu");
}
}
public function displayUnAcceptJeuOK() {
$this->view->display();
}
public function displayModifJeu() {
$slug = $this->route["params"]["slug"];
$this->view->jeu = Jeu::getFromSlug($slug);
$this->view->display();
}
public function displayModifJeuOK() {
$this->view->display();
}
public function verifyModifJeu() {
$slug = $this->route["params"]["slug"];
if(!isset($_POST['min_joueurs']) || !isset($_POST['type']) || !isset($_POST['type_scores'])) {
session_start();
$_SESSION['modifJeuErrCode'] = 1;
header("location:../modif");
die();
}
if(isset($_FILES['image'])) {
list($err, $image) = getImage($_FILES['image'], 512, 512);
if ($err == 0) {
saveImage($image, ROOT . "/www/images/jeu/" . $_POST['slug_jeu'] . ".jpg");
} elseif($err == 2) {
$_SESSION["addRequestErrCode"] = $err; // on stocke le code d'erreur
header('Location:../modif'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne)
die();
}
}
$data = $_POST;
foreach (array('max_joueurs', 'min_equipes', 'max_equipes') as $truc) {
if ($data[$truc] == 0) {
$data[$truc] = null;
}
}
Admin::setModifJeu($slug, $data);
header("Location:ok");
}
public function displayJoueur() {
$this->view->joueurs = Profil::getList();
$this->view->display();
}
public function supprimeJoueur() {
$slug = $this->route["params"]["slug"];
Admin::supprJoueur($slug);
unlink(ROOT."/www/images/avatar/".$slug.".jpg");
header("Location:supprime/ok");
}
public function displaySupprimeJoueurOK() {
$this->view->display();
}
public function displayListPartie() {
$this->view->listPartie = Admin::getListPartie();
$this->view->display();
}
public function initModifPartie() {
session_start();
$id = $this->route["params"]["slug"];
$partie = Partie::getFromId($id);
$jeuactuel = Jeu::getFromSlug($partie->jeu);
if($jeuactuel->type == "equipes"){
$_SESSION['equipes'] = Admin::getEquipes($id);
$_SESSION['jeu_select'] = $jeuactuel;
$_SESSION['id_partie'] = $id;
header("location:modif/stepe1");
die();
} else {
$_SESSION['joueurs_select'] = Admin::getListeJoueur($id);
$_SESSION['jeu_select'] = $jeuactuel;
$_SESSION['id_partie'] = $id;
header("location:modif/step1");
die();
}
}
public function displayModifPartieStepe1()
{
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 displayModifPartieStep1()
{
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();
}
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 ModifPartieaddjoueurs1()
{
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 ModifPartieclearstep1()
{
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 ModifPartiedeljoueurs1()
{
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 ModifPartiedelequipe()
{
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 ModifPartieaddequipe()
{
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 verifyModifPartieStep1()
{
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 displayModifPartieStep2()
{
session_start();
$id = $this->route["params"]["slug"];
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'];
if($this->view->jeuactuel->type_scores == "scores") {
$this->view->scorePartie = Admin::getListeScorePartie($id);
} else {
$this->view->classement = Admin::getListeClassement($id);
}
$this->view->display();
}
public function displayModifPartieStepe2()
{
session_start();
$id = $this->route["params"]["slug"];
if (!isset($_SESSION['jeu_select'])) {
header("Location:../../../partie");
die();
}
if (!isset($_SESSION['equipes'])) {
header("Location:../initModif");
die();
}
if(isset($_SESSION['errMsg'])){
$this->view->errMsg = $_SESSION['errMsg'];
unset($_SESSION['errMsg']);
}
$this->view->jeuactuel = $_SESSION['jeu_select'];
$this->view->equipes = $_SESSION['equipes'];
if($this->view->jeuactuel->type_scores == "scores") {
$this->view->scorePartie = Admin::getListeScorePartie($id);
} else {
$this->view->classement = Admin::getListeClassement($id);
}
$this->view->display();
}
public function verifyModifPartieStep2()
{
$id = $this->route["params"]["slug"];
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 = Admin::ModifPartie($id,$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 = Admin::ModifPartie($id, $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;
}
}
}
public function supprPartie() {
$id = $this->route["params"]["slug"];
Admin::supprPartie($id);
header("Location:supprime/ok");
}
public function displaysupprPartieOK() {
$this->view->display();
}
}