diff --git a/app/controller/JeuController.php b/app/controller/JeuController.php index 84da026d732f7b9e551b238734f6981e35b2e29f..a4e7e5eed04e9505ed2113f88f4ff9252099def2 100644 --- a/app/controller/JeuController.php +++ b/app/controller/JeuController.php @@ -32,11 +32,39 @@ class JeuController extends Controller { } public function displayFormAdd() { + session_start(); + + if(isset($_SESSION['addRequestErrCode'])) { // si message d'erreur + $errCode = $_SESSION['addRequestErrCode']; + if ($errCode == 1) { // on détermine le message + $errMsg = "<h3>Ce jeu est déjà dans la base !</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>"; + } elseif ($errCode == 8) { + $errMsg = "<h3>Les valeurs pour les joueurs et/ou les équipes doivent être des nombres.</h3>"; + } elseif ($errCode == 9) { + $errMsg = "<h3>Les valeurs pour les joueurs et/ou les équipes sont incohérentes.</h3>"; + } + else{ + $errMsg = "<h3>Exception non gérée.</h3>"; + } + unset($_SESSION['addRequestErrCode']); + $this->view->errMsg = $errMsg; + } + $this->view->display(); } public function addRequest() { - if(!isset($_POST['nom']) || !isset($_POST['description'])) { // si l'une des données manque, erreur + session_start(); + if(!isset($_POST['nom']) || !isset($_POST['description']) || !isset($_POST['type']) || !isset($_POST['type_scores']) + || !isset($_POST['max_joueurs']) ||!isset($_POST['min_joueurs'])) { // si l'une des données manque, erreur //appeler une fonction d'erreur echo "<h1>Erreur : variables absentes</h1>"; die(); @@ -46,25 +74,89 @@ class JeuController extends Controller { $data['slug_jeu'] = self::slugify($_POST['nom']); $result = Jeu::checkExists($data['slug_jeu']); // vérifie si le jeu n'est pas encore dans la BDD - + $_POST['type_scores'] = self::slugify($_POST['type_scores']); if($result == 0) { // connexion valide 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 == 1) { - session_start(); // on démarre une session pour avoir accès aux variables superglobales de session $_SESSION["addRequestErrCode"] = 2; // on stocke le code d'erreur header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) die(); } else { - session_start(); // on démarre une session pour avoir accès aux variables superglobales de session $_SESSION["addRequestErrCode"] = $err; // on stocke le code d'erreur header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) die(); } - Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0);// on ajoute le jeu à la BDD avec + + if(!is_numeric($data['max_joueurs'])) { + $_SESSION["addRequestErrCode"] = 8; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + + if($data['min_joueurs'] < 0) { + $_SESSION["addRequestErrCode"] = 9; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + + if(!isset($data['max_joueurs_inf']) && ($data['max_joueurs'] < 0 || $data['max_joueurs'] < $data['min_joueurs'])) { + if(!is_numeric($data['min_joueurs'])) + $_SESSION["addRequestErrCode"] = 8; + else + $_SESSION["addRequestErrCode"] = 9; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + + if($data['type'] == "Chacun pour soi"){ + $_POST['type'] = "duels"; + if(isset($data['max_joueurs_inf']) && $data['max_joueurs_inf']) + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $_POST['type'], $data['type_scores'], $data['min_joueurs']);// on ajoute le jeu à la BDD avec + else{ + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $_POST['type'], $data['type_scores'], $data['min_joueurs'], $data['max_joueurs']);// on ajoute le jeu à la BDD avec + } header('Location:requestvalid'); // on redirige vers la page OK + } + else if ($data['type'] == "Équipes"){ + $_POST['type'] = "equipes"; + if(!isset($data['max_equipes']) || !isset($data['min_equipes'])) { + echo "<h1>Erreur : variables absentes</h1>"; + die(); + } + if(!is_numeric($data['max_equipes']) || !is_numeric($data['min_equipes'])) { + $_SESSION["addRequestErrCode"] = 8; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + if($data['min_equipes'] < 0) { + $_SESSION["addRequestErrCode"] = 9; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + if(!isset($data['max_equipes_inf']) && ($data['max_equipes'] < 0 || $data['max_equipes'] < $data['min_equipes'])) { + $_SESSION["addRequestErrCode"] = 9; // on stocke le code d'erreur + header('Location:../addjeu'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + die(); + } + if(isset($data['max_joueurs_inf']) && $data['max_joueurs_inf']){ + if(isset($data['max_equipes_inf']) && $data['max_equipes_inf']) + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $data['type'], $data['type_scores'], $data['min_joueurs'], null, $data['min_equipes']);// on ajoute le jeu à la BDD avec + else{ + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $data['type'], $data['type_scores'], $data['min_joueurs'], null, $data['min_equipes'], $data['max_equipes']);// on ajoute le jeu à la BDD avec + } + } + else{ + if(isset($data['max_equipes_inf']) && $data['max_equipes_inf']) + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $data['type'], $data['type_scores'], $data['min_joueurs'], $data['max_joueurs'], $data['min_equipes']);// on ajoute le jeu à la BDD avec + else{ + Jeu::addRequest($data['nom'], $data['description'], $data['slug_jeu'], 0, $data['type'], $data['type_scores'], $data['min_joueurs'], $data['max_joueurs'], $data['min_equipes'], $data['max_equipes']);// on ajoute le jeu à la BDD avec + } + } + header('Location:requestvalid'); + } } else { session_start(); // on démarre une session pour avoir accès aux variables superglobales de session $_SESSION["addRequestErrCode"] = 2; // on stocke le code d'erreur diff --git a/app/kernel/View.php b/app/kernel/View.php index 65c48bef3086f2660d4fbde60f864e7a3d641327..6b1a1467b901b7aaad3c3da53046f13af5e38748 100644 --- a/app/kernel/View.php +++ b/app/kernel/View.php @@ -24,6 +24,9 @@ class View { // classe abstraite pour les vues } public function __get($key) { // idem, mais pour les getters. :-) - return $this->data[$key]; + if(isset($this->data[$key])) + return $this->data[$key]; + else + return null; } } diff --git a/app/model/Jeu.php b/app/model/Jeu.php index f873c0355e543749ab6e61aef73c25f3e11c95f4..672342e38d2dd9899d2572ca13682bbf4175d36b 100644 --- a/app/model/Jeu.php +++ b/app/model/Jeu.php @@ -75,11 +75,22 @@ class Jeu extends Model { return 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon... } - public static function addRequest($nom_jeu, $description, $slug_jeu, $est_valide) { + public static function addRequest($nom_jeu, $description, $slug_jeu, $est_valide, $type, $type_scores, $min_joueurs, $max_joueurs=null, $min_equipes=null, $max_equipes=null) { $db = Database::getInstance(); - $sql = "INSERT INTO R_jeu (nom, description, slug, est_valide) VALUES (:nom, :description, :slug, :est_valide);"; - $stmt = $db->prepare($sql); - if($stmt->execute(array(":nom" => $nom_jeu, ":description" => $description, ":slug" => $slug_jeu, ":est_valide" => $est_valide))) { + $sql = "INSERT INTO R_jeu (nom, description, slug, est_valide, min_joueurs, max_joueurs, min_equipes, max_equipes, type, type_scores) + VALUES (:nom, :description, :slug, :est_valide, :min_joueurs, :max_joueurs, :min_equipes, :max_equipes, :type, :type_scores);"; + print($nom_jeu); + print($description); + print($slug_jeu); + print($est_valide); + print($type); + print($type_scores); + print($min_joueurs); + print($max_joueurs); + print($min_equipes); + print($max_equipes); + $stmt = $db->prepare($sql); + if($stmt->execute(array(":nom" => $nom_jeu, ":description" => $description, ":slug" => $slug_jeu, ":est_valide" => $est_valide, ":type" => $type, ":type_scores" => $type_scores, ":min_joueurs" => $min_joueurs, ":max_joueurs" => $max_joueurs, ":min_equipes" => $min_equipes, ":max_equipes" => $max_equipes))) { //ok } else { diff --git a/app/view/Jeu/displayFormAdd.html b/app/view/Jeu/displayFormAdd.html index 195b72b65701b9737ce4fad7cc45282a8bdf8759..f40d5ca9eec09c8c450d42b5fc7ded51c4795fc5 100644 --- a/app/view/Jeu/displayFormAdd.html +++ b/app/view/Jeu/displayFormAdd.html @@ -1,5 +1,4 @@ -<?php - session_start(); +<?php if(!isset($_SESSION['connected']) || $_SESSION['connected'] != true) { header('Location:'.BASE_URL); @@ -9,38 +8,42 @@ include(ROOT."/app/view/Includes/header.include.html"); ?> - <?php - if(isset($_SESSION['addRequestErrCode'])) { // si message d'erreur - $errCode = $_SESSION['addRequestErrCode']; - if($errCode == 1) { // on détermine le message - $errMsg = '<h3>Ce jeu est déjà dans la base !</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['addRequestErrCode']); // on retire la variable de session - } - ?> - - <article> - <h2>Formulaire de demande d'ajout de jeu</h2> - <div class="addjeu-form"> - <form method="post" action="addjeu/addrequest" enctype="multipart/form-data"> - <label for="nom">Nom du jeu :</label> <input type="text" name="nom" required="" id="nom" /> <br/> - <label for="description">Description :</label> <textarea name="description" id="description" ></textarea> <br/> - <label for="image">Image du jeu: </label> <input type="file" required="" name="image" id="image" /><br/> - <div class="submit"> - <input type="reset" name="reset" value="Réinitialiser"> - <input type="submit" name="submit" value="Demander l'ajout"> - </div> - </form> - </div> - </article> - +<?php if (!is_null($this->errMsg)){ ?> +<article class="msg-erreur"><?php echo $this->errMsg;?></article> +<?php } ?> + +<article> + <h2>Formulaire de demande d'ajout de jeu</h2> + <div class="addjeu-form"> + <form method="post" action="addjeu/addrequest" enctype="multipart/form-data"> + <label for="nom">Nom du jeu :</label> <input type="text" name="nom" required="" id="nom"/> <br/> + <label for="description">Description :</label> <textarea name="description" id="description"></textarea> + <br/> + <label for="type">Type de jeu :</label> + <select name="type" required="" id="type"> + <option>Équipes</option> + <option>Chacun pour soi</option> + </select><br/> + + <label for="type_scores">Type du résultat :</label> + <select name="type_scores" required="" id="type_scores"> + <option>Scores</option> + <option>Classement</option> + </select><br/> + + <label for="max_joueurs">Joueurs max : </label><input type="text" name="max_joueurs" id="max_joueurs"/><br/> + <label for="max_joueurs_inf">Joueurs max infini ?</label><input type="checkbox" name="max_joueurs_inf" id="max_joueurs_inf" value="1"> + <label for="min_joueurs">Joueurs min : </label><input type="text" name="min_joueurs" required="" id="min_joueurs"/><br/> + <label for="min_equipes">Equipes max : </label><input type="text" name="min_equipes" id="min_equipes"/><br/> + <label for="max_equipes">Equipes min : </label><input type="text" name="max_equipes" id="max_equipes"/><br/> + <label for="max_equipes_inf">Equipes max infini ?</label><input type="checkbox" name="max_equipes_inf" id="max_equipes_inf" value="1"> + <label for="image">Image du jeu: </label> <input type="file" required="" name="image" id="image"/><br/> + <div class="submit"> + <input type="reset" name="reset" value="Réinitialiser"> + <input type="submit" name="submit" value="Demander l'ajout"> + </div> + </form> + </div> +</article> + <?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/valeurs.sql b/valeurs.sql index 9d93f79db8598bd630345773db44b238e9824eb8..4d6c35f844785f446011b9a0f536483b45d1ded5 100644 --- a/valeurs.sql +++ b/valeurs.sql @@ -1,8 +1,9 @@ INSERT INTO R_jeu (nom, description, slug, est_valide, min_joueurs, max_joueurs, min_equipes, max_equipes, type) VALUES -('Rencontres Cosmiques', 'Jeu de plateau de 3 à 6 joueurs dont le but consiste à remporter cinq planètes adverses.', 'rencontres-cosmiques', 1, 3, 5, NULL, NULL, 'duels'), -('Jeu Équipes', 'cats', 'jeu-equipes', 0, 0, NULL, 0, 4, 'equipes'); +('Rencontres Cosmiques', 'Jeu de plateau de 3 à 6 joueurs dont le but consiste à remporter cinq planètes adverses.', 'rencontres-cosmiques', 1, 3, 5, NULL, NULL, 'duels', 'scores'), +('Jeu Équipes', 'cats', 'jeu-equipes', 0, 0, NULL, 0, 4, 'equipes', 'scores'); -INSERT INTO R_joueur (slug, pseudo, password, nom, prenom, email, description) VALUES +INSERT INTO R_joueur (slug, pseudo, password, nom, prenom, email, description, avatar) VALUES +<<<<<<< HEAD ('nestor', 'Nestor', '$2y$10$CwRFu66YRrpI2dFmLWWjeeDn2GI5Gup5ililfJsT5HDE.zyiAG/6m', 'Bochet', 'Vincent', 'vbochet@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)', 0), ('nestor1', 'Nestor1', '', 'Bochet1', 'Vincent', 'vbochet1@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)', 0), ('nestor2', 'Nestor2', '', 'Bochet2', 'Vincent', 'vbochet2@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)', 0),