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