diff --git a/app/controller/ContactController.php b/app/controller/ContactController.php new file mode 100644 index 0000000000000000000000000000000000000000..8942bf0507aee41ad13e9e912c6fe204a26fbcbe --- /dev/null +++ b/app/controller/ContactController.php @@ -0,0 +1,62 @@ +<?php +class ContactController extends Controller { // classe de contrôleur pour l'inscription au site + + public function displayValid() { // la fonction d'affichage du formulaire + $this->view->display(); + } + + public function displayForm() { // la fonction d'affichage du formulaire + $this->view->display(); + } + + public function send() { // vérifie les données de contact + if(!isset($_POST['nom']) || !isset($_POST['prenom']) || !isset($_POST['email']) || !isset($_POST['message'])) { // si l'une des données manque, erreur + //appeler une fonction d'erreur + echo "<h1>Erreur : variables absentes</h1>"; + die(); + } + $data = $_POST; + + if($data['nom'] == "") { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 2; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if($data['prenom'] == "") { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 3; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if(!preg_match("#^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $data['email'])) { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 4; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + if($data['message'] == null) { + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $_SESSION["contactErrCode"] = 5; // on stocke le code d'erreur + header('Location:../contact'); // on redirige vers la page de formulaire (il faut faire un retour dans le dossier parent pour que ça fonctionne) + } + + $sender = $data['prenom']; + if($data['pseudo'] != "") $sender .= " '".$data['pseudo']."'"; + $sender .= " ".$data['nom']; + + $header = "From: \"".$sender."\"<".$data['email'].">\n"; + $header.= "Reply-to: \"".$sender."\"<".$data['email'].">\n"; + $header.= "MIME-Version: 1.0\n"; + + $success = mail( + "vbochet@gmail.com", // adresse email du destinataire + "Message envoyé via Classements Ludiques", // objet du mail + htmlspecialchars($data['message']), // message du mail + $header);// on réalise l'inscription à l'aide d'une méthode de la classe Register + if ($success == 1) { + header('Location:valid'); // on redirige vers la page OK + } + else { + echo "<h1>Erreur : l'envoi du mail a échoué</h1>"; + } + } + +} diff --git a/app/controller/JeuController.php b/app/controller/JeuController.php index 84da026d732f7b9e551b238734f6981e35b2e29f..1b10c85ab47e37c35ce13c600c83f5c76b1d5031 100644 --- a/app/controller/JeuController.php +++ b/app/controller/JeuController.php @@ -32,11 +32,42 @@ 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>"; + } + elseif ($errCode == 10) { + $errMsg = "<h3>Les joueurs/équipes max ne sont pas remplis.</h3><p><em>Si vous ne voulez pas les remplir, cochez la case infini, ou changez de type de jeu.</em></p>"; + } + 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 +77,92 @@ 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['min_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['max_joueurs'])) + $_SESSION["addRequestErrCode"] = 10; + 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['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'])) { + if(!is_numeric($data['max_equipes'])) + $_SESSION["addRequestErrCode"] = 10; + 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(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 @@ -83,4 +181,36 @@ class JeuController extends Controller { public function displayRequestValid() { // la fonction d'affichage de réussite $this->view->display(); // on affiche la page avec le message de réussite } + + public function displayFavorisValid() { // la fonction d'affichage de réussite + session_start(); // on démarre une session pour avoir accès aux variables superglobales de session + $slug_jeu = $this->route["params"]["slug"]; + if(!isset($_SESSION['connected'])) { // vérification que membre connecté + $this->view->msg_error = "Vous n'êtes pas connecté !"; + $this->view->sous_msg = "Connectez-vous, puis revenez ajouter ce jeu. :)"; + $this->view->display(); // on affiche la page avec le message d'erreur + } + else if(!(Jeu::checkExists($slug_jeu))) { // vérification que jeu existe + $this->view->msg_error = "Ce jeu n'existe pas !"; + $this->view->sous_msg = "Vous pouvez peut-être demander son ajout via le formulaire de demande d'ajout de jeu. :)"; + $this->view->display(); // on affiche la page avec le message d'erreur + } + else if(Profil::checkJeuFavoris($_SESSION['user']->slug, $slug_jeu)) { // si jeu déjà dans favoris => on le retire + Profil::upadteJeuFavoris($_SESSION['user']->slug, $slug_jeu, 0); + $this->view->msg_success = "Ce jeu a été retiré de vos favoris !"; + $this->view->sous_msg = "Il en faut pour tous les goûts ! :)"; + $this->view->display(); // on affiche la page avec le message de réussite + } + else { // sinon, on le met en favoris + if(Profil::checkADejaJoue($_SESSION['user']->slug, $slug_jeu)) { // si une ligne joueur-jeu existe déjà => UPDATE + Profil::upadteJeuFavoris($_SESSION['user']->slug, $slug_jeu, 1); + } + else { // sinon => INSERT avec des null pour le classement et le score + Profil::insertJeuFavoris($_SESSION['user']->slug, $slug_jeu, 1); + } + $this->view->msg_success = "Ce jeu a été ajouté à vos favoris !"; + $this->view->sous_msg = ":)"; + $this->view->display(); // on affiche la page avec le message de réussite + } + } } diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 60c0bc0561a141c36e4c2d44b393b63d985dd154..3ff09c27f1d3a50bb67185cbf0d0ab84474a91a0 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -55,6 +55,11 @@ class Router $result["action"] = "displayRequestValid"; // il n'y a pas de paramètres attendus, on n'affecte pas $result["params"] } + else if($parts[0] == "add_favoris" && count($parts) == 2) { // pour ajouter un jeu à ses favoris (add_favoris/nomdujeu) + $result["controller"] = "Jeu"; + $result["action"] = "displayFavorisValid"; + $result["params"]["slug"] = $parts[1]; //on a des paramètres dans l'URL (normalement le slug du jeu), on le stocke aussi + } /*** consultation des profils ***/ else if($parts[0] == "profil" && count($parts) == 2) { // consultation d'un profil : 2 morceaux (profil/pseudoDeLaPersonne) @@ -87,7 +92,7 @@ class Router $result["params"]["slug"] = $result["params"]["slug"].'/'.$parts[$k]; } } - + /*** connexion au site ***/ else if($parts[0] == "connexion" && count($parts) == 1) { // formulaire de connexion $result["controller"] = "Connexion"; @@ -124,7 +129,22 @@ class Router $result["action"] = "save"; // "save" pour appeler la méthode d'enregistrement dans la BDD } - /*** Ajout de partie ***/ + /*** contact au site ***/ + else if($parts[0] == "contact" && count($parts) == 1) { // formulaire de connexion + $result["controller"] = "Contact"; + $result["action"] = "displayForm"; // "displayForm" pour afficher le formulaire + } + else if($parts[0] == "contact" && count($parts) == 2 && $parts[1] == "valid") { // connexion réussie + $result["controller"] = "Contact"; + $result["action"] = "displayValid"; // "displayValid" pour afficher la page avec le message de réussite + } + else if($parts[0] == "contact" && count($parts) == 2 && $parts[1] == "send") { // réalisation de l'inscription dans la BDD + $result["controller"] = "Contact"; + $result["action"] = "send"; // "save" pour appeler la méthode d'enregistrement dans la BDD + } + + + /*** Ajout de partie ***/ else if ($parts[0] == "add_partie" && count($parts) == 1) { $result["controller"] = "Partie"; $result["action"] = "displayStep0"; 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..743c804838190916c709bba7a189e11cb65ac41b 100644 --- a/app/model/Jeu.php +++ b/app/model/Jeu.php @@ -75,11 +75,12 @@ 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);"; + $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/model/Profil.php b/app/model/Profil.php index 1a05985e74ce4d0b2e9570af6bc36b4be492f29a..0fd63f1e87755f958a7b108051bedae35f55b361 100644 --- a/app/model/Profil.php +++ b/app/model/Profil.php @@ -71,6 +71,44 @@ class Profil extends Model { // classe de modèle pour l'affichage de profils return 0; // on aurait pu mettre deux return (un dans le if et un ici), mais bon... } + + public static function checkJeuFavoris($slug_joueur, $slug_jeu) { // méthode permettant de vérifier si un jeu est jeu favoris d'un joueur + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "SELECT * FROM R_joueur_jeu WHERE joueur = :slug_j AND jeu = :slug_jeu AND est_jeu_favoris"; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":slug_j" => $slug_joueur, ":slug_jeu" => $slug_jeu)); // on remplace les variables dans la requête + + if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe + return 1; + } + return 0; + } + + public static function checkADejaJoue($slug_joueur, $slug_jeu) { // méthode permettant de vérifier si un joueur a déjà joué à un jeu + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "SELECT * FROM R_joueur_jeu WHERE joueur = :slug_j AND jeu = :slug_jeu"; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":slug_j" => $slug_joueur, ":slug_jeu" => $slug_jeu)); // on remplace les variables dans la requête + + if($result = $req->fetch()) { // on récupère l'enregistrement, s'il existe + return 1; + } + return 0; + } + + public static function upadteJeuFavoris($slug_joueur, $slug_jeu, $favoris) { // méthode permettant de définir un jeu comme étant jeu favoris d'un joueur, ou l'inverse + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "UPDATE R_joueur_jeu SET est_jeu_favoris = :favoris WHERE joueur = :slug_j AND jeu = :slug_jeu"; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":favoris" => $favoris, ":slug_j" => $slug_joueur, ":slug_jeu" => $slug_jeu)); // on remplace les variables dans la requête + } + + public static function insertJeuFavoris($slug_joueur, $slug_jeu, $favoris) { // méthode permettant de définir un jeu comme étant jeu favoris d'un joueur, ou l'inverse + $db = Database::getInstance(); // on récupère la connexion à la BDD + $sql = "INSERT INTO R_joueur_jeu VALUES (:slug_joueur, :slug_jeu, null, null, :favoris) "; + $req = $db->prepare($sql); // on prépare la requête + $req->execute(array(":slug_joueur" => $slug_joueur, ":slug_jeu" => $slug_jeu, ":favoris" => $favoris)); // on remplace les variables dans la requête + } } diff --git a/app/view/Contact/displayForm.html b/app/view/Contact/displayForm.html new file mode 100644 index 0000000000000000000000000000000000000000..be0b9b6a50155dc16fc6513e84764c819bfc94b4 --- /dev/null +++ b/app/view/Contact/displayForm.html @@ -0,0 +1,95 @@ +<?php + session_start(); + + $page_title = "Formulaire de contact"; + include(ROOT."/app/view/Includes/header.include.html"); +?> + + + <?php + if(isset($_SESSION['contactErrCode'])) { // si message d'erreur + $errCode = $_SESSION['contactErrCode']; + if($errCode == 2) { // on détermine le message + $errMsg = '<h3>Veuillez indiquer votre nom !</h3>'; + } + elseif($errCode == 3) { + $errMsg = '<h3>Veuillez indiquer votre prénom !</h3>'; + } + elseif($errCode == 4) { + $errMsg = '<h3>Veuillez indiquer une adresse mail valide !</h3>'; + } + elseif($errCode == 5) { + $errMsg = '<h3>Veuillez indiquer votre message !</h3>'; + } + echo '<article class="msg-erreur">'.$errMsg.'</article>'; // on affiche le message + unset($_SESSION['contactErrCode']); // on retire la variable de session + } + ?> + + + <article> + <h2>Formulaire de contact</h2> + <div class="inscription-form"> + <form method="post" action="contact/send" enctype="multipart/form-data" onsubmit="return checkForm();"> + + <div class="form-line"> + <div class="validation-container-left"> + <label for="pseudo">Pseudo : </label> + <input type="text" name="pseudo" id="pseudo" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="nom">Nom* : </label> + <input type="text" required="" name="nom" id="nom" /> + </div> + <div class="validation-container"> + <span id="rsp_nom" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_nom" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="prenom">Prénom* : </label> + <input type="text" required="" name="prenom" id="prenom" /> + </div> + <div class="validation-container"> + <span id="rsp_prenom" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_prenom" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="email">Adresse e-mail* : </label> + <input type="email" required="" name="email" id="email" onchange="if(this.value != '') checkEmail(this.value, this.id);" /> + </div> + <div class="validation-container"> + <span id="rsp_email" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_email" class="validation-checkbox" /> + </div> + </div> + <div class="form-line"> + <div class="validation-container-left"> + <label for="description">Votre message* : </label> + <textarea required="" name="message" id="message"></textarea> + </div> + <div class="validation-container"> + <span id="rsp_message" class="validation-container-content"></span> + <input type="checkbox" disabled name="valid_message" class="validation-checkbox" /> + </div> + </div> + <div class="submit"> + <input type="reset" name="reset" value="Réinitialiser"> + <input type="submit" name="submit" value="Envoyer"> + </div> + </form> + </div> + </article> + + + + <script type="text/javascript" src="<?php echo BASE_URL; ?>/js/jquery.min.js"></script> + <script type="text/javascript" src="<?php echo BASE_URL; ?>/js/verif_form_contact.js"></script> + + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Contact/displayValid.html b/app/view/Contact/displayValid.html new file mode 100644 index 0000000000000000000000000000000000000000..d919b943c6e438cb8b89b27f49a2319f3430d939 --- /dev/null +++ b/app/view/Contact/displayValid.html @@ -0,0 +1,11 @@ +<?php + $page_title = "Message envoyé"; + include(ROOT."/app/view/Includes/header.include.html"); +?> + + <article class="msg-valide"><h2>Votre message a été envoyé !</h2></article> + <article> + <p>Vous pouvez continuer à naviguer sur notre site. :)</p> + </article> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Jeu/display.html b/app/view/Jeu/display.html index 6d7cb413d9c5444b913eb7da7896740cfde7c692..0e5d6151c38a44aeaad3d3d04c4316176cff1768 100644 --- a/app/view/Jeu/display.html +++ b/app/view/Jeu/display.html @@ -12,6 +12,26 @@ <?php echo $this->jeu->description; ?> </p> </div> + <?php + if(isset($_SESSION['connected']) && $_SESSION['connected'] == true) { + if(Profil::checkJeuFavoris($_SESSION['user']->slug, $this->jeu->slug)) { + ?> + <h2 class="stat-title">Vous n'aimez plus ce jeu ?</h2> + <div class="inscription-btn-container"> + <a class="inscription-btn" href="<?php echo BASE_URL; ?>/add_favoris/<?php echo $this->jeu->slug; ?>">Retirez-le de vos favoris !</a> + </div> + <?php + } + else { + ?> + <h2 class="stat-title">Vous aimez ce jeu ?</h2> + <div class="inscription-btn-container"> + <a class="inscription-btn" href="<?php echo BASE_URL; ?>/add_favoris/<?php echo $this->jeu->slug; ?>">Ajoutez-le à vos favoris !</a> + </div> + <?php + } + } + ?> </article> <div class="classement-card"> <table class="classement-table"> diff --git a/app/view/Jeu/displayFavorisValid.html b/app/view/Jeu/displayFavorisValid.html new file mode 100644 index 0000000000000000000000000000000000000000..c73d7cb1fc2f16e97ea081d643265fb429b563e4 --- /dev/null +++ b/app/view/Jeu/displayFavorisValid.html @@ -0,0 +1,23 @@ +<?php + // session déjà démarrée dans le contrôleur, pas besoin de le faire ici + + $page_title = "Ajout du jeu à ses favoris"; + include(ROOT."/app/view/Includes/header.include.html"); + + if(!is_null($this->msg_success)) { +?> + <article class="msg-valide"><h2><?php echo $this->msg_success; ?></h2></article> +<?php + } + else if(!is_null($this->msg_error)) { +?> + <article class="msg-erreur"><h2><?php echo $this->msg_error; ?></h2></article> +<?php + } +?> + + <article> + <p><?php echo $this->sous_msg; ?></p> + </article> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?> diff --git a/app/view/Jeu/displayFormAdd.html b/app/view/Jeu/displayFormAdd.html index 195b72b65701b9737ce4fad7cc45282a8bdf8759..9b704e76bdea692dfa9dc5c7747fd9e5137fbf09 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 * (max 200x200px) : </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/generate_base.sql b/generate_base.sql index 22770ab4d3dbd7f8f9653e4a2636d134bad76cd6..54a7b5ebcffe1da5a1f885fd36dbfb57ecddab2e 100644 --- a/generate_base.sql +++ b/generate_base.sql @@ -8,7 +8,8 @@ CREATE TABLE R_jeu ( min_joueurs INT(11), min_equipes INT(11), max_equipes INT(11), - type ENUM ('duels', 'equipes') NOT NULL + type ENUM ('duels', 'equipes') NOT NULL, + type_scores ENUM ('classement', 'scores') NOT NULL ); DROP TABLE IF EXISTS R_joueur; @@ -19,7 +20,8 @@ CREATE TABLE R_joueur ( nom VARCHAR(150) NOT NULL, prenom VARCHAR(150) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, - description TEXT NOT NULL + description TEXT NOT NULL, + avatar BOOLEAN DEFAULT '0' ); DROP TABLE IF EXISTS R_admin; diff --git a/valeurs.sql b/valeurs.sql index fbb392c4674fad9c75242ff440039f02870ac6e3..68537978e8caf73ba7156c44fd32ba2ca4e9d0ff 100644 --- a/valeurs.sql +++ b/valeurs.sql @@ -1,13 +1,13 @@ -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'); +INSERT INTO R_jeu (nom, description, slug, est_valide, min_joueurs, max_joueurs, min_equipes, max_equipes, type, type_scores) 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', '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 -('nestor', 'Nestor', '', 'Bochet', 'Vincent', 'vbochet@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)'), -('nestor1', 'Nestor1', '', 'Bochet1', 'Vincent', 'vbochet1@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)'), -('nestor2', 'Nestor2', '', 'Bochet2', 'Vincent', 'vbochet2@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)'), -('nestor3', 'Nestor3', '', 'Bochet3', 'Vincent', 'vbochet3@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)'), -('nestor4', 'Nestor4', '', 'Bochet4', 'Vincent', 'vbochet4@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)'); +INSERT INTO R_joueur (slug, pseudo, password, nom, prenom, email, description, avatar) VALUES +('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), +('nestor3', 'Nestor3', '', 'Bochet3', 'Vincent', 'vbochet3@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)', 0), +('nestor4', 'Nestor4', '', 'Bochet4', 'Vincent', 'vbochet4@gmail.com', 'L''un des quatre membres du groupe, le moins joueur des quatre. :)', 0); INSERT INTO R_admin (identite) VALUES diff --git a/www/js/verif_form_contact.js b/www/js/verif_form_contact.js new file mode 100644 index 0000000000000000000000000000000000000000..437dcb78990724c5d5a39f3e2cef9efd2a3a65ad --- /dev/null +++ b/www/js/verif_form_contact.js @@ -0,0 +1,43 @@ +function checkEmail(value, target) { + var regex = /^[a-z0-9._-]+(@|%40)[a-z0-9._-]{2,}\.[a-z]{2,4}$/; + var success = regex.test(value); + + if (success) { + //validation OK + $('#rsp_'+target).text("Ok"); + $('#rsp_'+target).parent().css("display","none"); + $('input[name="valid_'+target+'"]').prop('checked',true); + } + else { + //invalidation + $('#rsp_'+target).text("Format invalide"); + $('#rsp_'+target).parent().css("display","flex"); + $('input[name="valid_'+target+'"]').prop('checked',false); + $('#'+target).focus(); + } +} + +function checkForm() { + if($('#nom').val() == "") { + alert("Veuillez entrer votre nom dans le formulaire"); + $('#nom').focus(); + return false; + } + if($('#prenom').val() == "") { + alert("Veuillez entrer votre prénom dans le formulaire"); + $('#prenom').focus(); + return false; + } + if($('#email').val() == "" || !$('input[name="valid_email"]').is(':checked')) { + alert("Veuillez indiquer une adresse e-mail valide"); + $('#email').focus(); + return false; + } + if($('#message').val() == "") { + alert("Veuillez entrer votre message"); + $('#message').focus(); + return false; + } + + return true; +}