From 1130deaa1d1d64ea1497298847719ace42d5f337 Mon Sep 17 00:00:00 2001 From: Table <romain.drouin@ensiie.fr> Date: Sun, 8 May 2016 10:57:26 +0200 Subject: [PATCH] Ajout de la modification d'un jeu --- app/controller/AdminController.php | 38 +++++++++++++ app/kernel/Router.php | 18 ++++++ app/model/Admin.php | 17 +++++- app/view/Admin/displayJeu.html | 6 +- app/view/Admin/displayModifJeu.html | 82 +++++++++++++++++++++++++++ app/view/Admin/displayModifJeuOK.html | 17 ++++++ 6 files changed, 174 insertions(+), 4 deletions(-) create mode 100644 app/view/Admin/displayModifJeu.html create mode 100644 app/view/Admin/displayModifJeuOK.html diff --git a/app/controller/AdminController.php b/app/controller/AdminController.php index e295296..2e06505 100644 --- a/app/controller/AdminController.php +++ b/app/controller/AdminController.php @@ -1,4 +1,5 @@ <?php +include(ROOT."/Image.php"); class AdminController extends Controller { @@ -52,4 +53,41 @@ class AdminController extends Controller { 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/" . $data['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"); + } } \ No newline at end of file diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 3ff09c2..2973aa3 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -229,6 +229,24 @@ class Router $result["params"]["slug"] = $parts[2]; } + else if($parts[0] == "admin" && count($parts) == 4 && $parts[1] == 'jeu' && $parts[3] == 'modif') { + $result["controller"] = 'Admin'; + $result['action'] = "displayModifJeu"; + $result["params"]["slug"] = $parts[2]; + } + + else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'jeu' && $parts[3] == 'modif' && $parts[4] == "verify") { + $result["controller"] = 'Admin'; + $result['action'] = "verifyModifJeu"; + $result["params"]["slug"] = $parts[2]; + } + + else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'jeu' && $parts[3] == 'modif' && $parts[4] == 'ok') { + $result["controller"] = 'Admin'; + $result['action'] = "displayModifJeuOK"; + $result["params"]["slug"] = $parts[2]; + } + else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addjoueurs1") { $result["controller"] = "Partie"; $result["action"] = "addjoueurs1"; diff --git a/app/model/Admin.php b/app/model/Admin.php index bba11db..227e6a4 100644 --- a/app/model/Admin.php +++ b/app/model/Admin.php @@ -1,4 +1,5 @@ <?php + class Admin extends Model { public static function estAdmin($slug) { @@ -68,5 +69,19 @@ class Admin extends Model { return $req->execute(array(':slug' => $slug)); } - + public static function setModifJeu($slug, $data) { + $db = Database::getInstance(); + $sql = "UPDATE R_jeu SET description = :description, max_joueurs = :max_joueurs, + min_joueurs = :min_joueurs, max_equipes = :max_equipes, min_equipes = :min_equipes, + type = :type, type_scores = :type_scores WHERE slug = :slug"; + $req = $db->prepare($sql); + return $req->execute(array(':slug' => $slug, + ':description' => $data['description'] , + ':type' => $data['type'], + ':max_joueurs' => $data['max_joueurs'], + ':min_joueurs' => $data['min_joueurs'], + ':max_equipes' => $data['max_equipes'], + ':min_equipes' => $data['min_equipes'], + ':type_scores' => $data['type_scores'])); + } } \ No newline at end of file diff --git a/app/view/Admin/displayJeu.html b/app/view/Admin/displayJeu.html index 168e104..52d1cb7 100644 --- a/app/view/Admin/displayJeu.html +++ b/app/view/Admin/displayJeu.html @@ -41,8 +41,8 @@ include(ROOT."/app/view/Includes/header.include.html"); <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['type']."</a></td> <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['min_equipes']."</a></td> <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['max_equipes']."</a></td> - <td><a href=\"jeu/".$ligne['slug']."/valide\"><img src=\"".BASE_URL."/images/ok.svg\" /></a></td> - <td><a href=\"\"><img src=\"".BASE_URL."/images/modif.svg\" /></a></td> + <td><a href=\"jeu/".$ligne['slug']."/valide\"><img src=\"".BASE_URL."/images/ok.svg\" alt=\"Valider\"/></a></td> + <td><a href=\"jeu/".$ligne['slug']."/modif\"><img src=\"".BASE_URL."/images/modif.svg\" alt=\"Modifier\"//></a></td> <td><a href=\"jeu/".$ligne['slug']."/supprime\"><img src=\"".BASE_URL."/images/cancel.svg\" /></a></td> </tr> "; @@ -76,7 +76,7 @@ include(ROOT."/app/view/Includes/header.include.html"); <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['type']."</a></td> <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['min_equipes']."</a></td> <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['max_equipes']."</a></td> - <td><a href=\"\"><img src=\"".BASE_URL."/images/modif.svg\" /></a></td> + <td><a href=\"jeu/".$ligne['slug']."/modif\"><img src=\"".BASE_URL."/images/modif.svg\" /></a></td> <td><a href=\"jeu/".$ligne['slug']."/unvalide\"><img src=\"".BASE_URL."/images/cancel.svg\" /></a></td> </tr> "; diff --git a/app/view/Admin/displayModifJeu.html b/app/view/Admin/displayModifJeu.html new file mode 100644 index 0000000..c7b499a --- /dev/null +++ b/app/view/Admin/displayModifJeu.html @@ -0,0 +1,82 @@ +<?php + $page_title = "Page d'administration"; +include(ROOT."/app/view/Includes/header.include.html"); +?> + +<?php if(isset($_SESSION['user']) && Admin::estAdmin($_SESSION['user']->slug)) { ?> + +<?php + if(isset($_SESSION['modifJeuErrCode'])) { // si message d'erreur + $errCode = $_SESSION['modifJeuErrCode']; + if($errCode == 1) { // on détermine le message + $errMsg = '<h3>Erreur une variable est manquante</h3>'; + } elseif($errCode == 2) { + $errMsg = '<h3>Image manquante</h3>'; + } elseif($errCode == 5) { + $errMsg = '<h3>Problème sur l\'image</h3>'; + } elseif($errCode == 6) { + $errMsg = '<h3>Le fichier n\'est pas une image</h3>'; + } elseif($errCode == 7) { + $errMsg = '<h3>L\'image est trop grande</h3>'; + } + echo '<article class="msg-erreur">'.$errMsg.'</article>'; // on affiche le message + unset($_SESSION['modifJeuErrCode']); // on retire la variable de session + } +?> + +<article> + <h2>Modifcation de <?php print $this->jeu->nom; ?></h2> + <div class="addjeu-form"> + <form method="post" action="modif/verify" enctype="multipart/form-data"> + <label for="nom">Nom du jeu :</label> <input type="text" name="nom" required="" id="nom" disabled value="<?php print $this->jeu->nom; ?>"/> <br/> + <label for="description">Description :</label> <textarea name="description" id="description" ><?php print $this->jeu->description; ?></textarea> <br/> + <label for="min_joueurs">Joueurs minimum*:</label> <input type="number" name="min_joueurs" required="" id="min_joueurs" value="<?php print $this->jeu->min_joueurs; ?>"/> <br/> + <label for="max_joueurs">Joueurs maximum :</label> <input type="number" name="max_joueurs" id="max_joueurs" value="<?php print $this->jeu->max_joueurs; ?>"/> <br/> + <label for="type">Type de jeu*:</label> + <select name="type" required="" id="type" > + <?php if($this->jeu->type == "duels") { + print ' + <option value="duels" selected="selected">Duels</option> + <option value="equipes">Equipes</option> + '; + } else { + print ' + <option value="duels">Duels</option> + <option value="equipes" selected="selected">Equipes</option> + '; + } + ?> + </select><br/> + <label for="min_equipes">Nombre d'équipes minimum :</label> <input type="number" name="min_equipes" id="min_equipes" value="<?php print $this->jeu->min_equipes; ?>"/> <br/> + <label for="max_equipes">Nombre d'équipes maximum :</label> <input type="number" name="max_equipes" id="max_equipes" value="<?php print $this->jeu->max_equipes; ?>"/> <br/> + <label for="type_scores">Type de classement*:</label> + <select name="type_scores" required="" id="type_scores" > + <?php if($this->jeu->type == "classement") { + print ' + <option value="classement" selected="selected">Classement</option> + <option value="scores">Scores</option> + '; + } else { + print ' + <option value="classement">Classement</option> + <option value="scores" selected="selected">Scores</option> + '; + } + ?> + </select><br/> + <label for="image">Image du jeu: </label> <input type="file" name="image" id="image" /><br/> + <div class="submit"> + <input type="reset" name="reset" value="Réinitialiser"> + <input type="submit" name="submit" value="Modifier"> + </div> + </form> + </div> +</article> + +<?php } else { ?> + +<article class="msg-erreur">Vous n'êtes pas connecté comme administrateur</article>' + +<?php } ?> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Admin/displayModifJeuOK.html b/app/view/Admin/displayModifJeuOK.html new file mode 100644 index 0000000..43e5476 --- /dev/null +++ b/app/view/Admin/displayModifJeuOK.html @@ -0,0 +1,17 @@ +<?php + $page_title = "Page d'administration"; +include(ROOT."/app/view/Includes/header.include.html"); +?> + +<?php if(isset($_SESSION['user']) && Admin::estAdmin($_SESSION['user']->slug)) { ?> + +<article class="msg-valide"><h2>Modification réussie !</h2></article> + + +<?php } else { ?> + +<article class="msg-erreur">Vous n'êtes pas connecté comme administrateur</article> + +<?php } ?> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> -- GitLab