X-Git-Url: http://git.euphorik.ch/?p=cl7.git;a=blobdiff_plain;f=php%2Fcontroller.php;h=090665008bc79cdf20f81287ad1b0d6936a946c8;hp=5a40098e033b643fd4b5ec302b3367e19e734a6d;hb=6b9eac51629ad6fcec7da5f48b92f4c2b54c5901;hpb=eb13d74a54796fabaa4034eeb2e803f41c7424ab diff --git a/php/controller.php b/php/controller.php index 5a40098..0906650 100644 --- a/php/controller.php +++ b/php/controller.php @@ -1,157 +1,173 @@ -valide && strtolower($le_participant->info->pseudo) === strtolower($_POST['pseudo'])) // le pseudo n'a pas changé - return FALSE; - - $loginDejaPris = mysql_fetch_array(mysql_query("SELECT count(*) FROM participants WHERE pseudo = '".addslashes($_POST['pseudo'])."'")); - if ($loginDejaPris[0] > 0) + private $participant; + private $config; + + public function Controller($participant, $config) { - $message_utilisateur = "Le pseudo '".$_POST["pseudo"]."' est déjà pris"; - return TRUE; - } - return FALSE; -} - -/** - * Renvoie TRUE si les données d'une inscription sont valides (POST). - */ -function donnees_inscription_valides() -{ - return - $_POST['pseudo'] != "" && - $_POST['pass1'] != "" && - $_POST['pass1'] == $_POST['pass2'] && - strlen($_POST['pass1']) >= 3 && - $_POST['nom'] != "" && - $_POST['prenom'] != "" && - $_POST['e_mail'] != ""; -} + $this->participant = $participant; + $this->config = $config; + + # inscription d'un nouveau participant + if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint()) + { + if ($this->config->get("inscription_terminees")) + return; -/** - * Met à jour les periodes du participant dont l'id est donnée - * en fonction de $_POST["periodes"] - * Attention, cette fonction doit être appelée dans une transaction. - */ -function set_periodes($id) -{ - $periodes = $_POST['periodes']; - if (!$periodes) - $periodes = array(); + $this->traiter_donnees_inscription(); + if (!$this->login_deja_pris() && # vérification des données + $this->donnees_inscription_valides() && + $_POST['accord'] == "on" + ) + { + mysql_query("BEGIN TRANSACTION"); + mysql_query(" + INSERT INTO participants + (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques) + VALUES ( + '".addslashes($_POST['pseudo'])."', + '".addslashes($_POST['pass1'])."', + '".addslashes($_POST['clan_nom'])."', + '".addslashes($_POST['clan_tag'])."', + '".addslashes($_POST['nom'])."', + '".addslashes($_POST['prenom'])."', + '".addslashes($_POST['age'])."', + '".addslashes($_POST['e_mail'])."', + '".addslashes($_POST['remarques'])."' + )" + ); + $id = mysql_insert_id(); + $this->set_periodes($id); + mysql_query("COMMIT"); + + $this->participant = new participant($_POST['pseudo'], $_POST['pass1']); + setcookie("COOKIE_INFO_PARTICIPANT", $this->participant->info->id, time() + 31104000); + $this->nouvel_inscrit = TRUE; + } + } + # un participant modifie ses infos + else if(isset($_POST['modification_participant']) && $this->participant->valide) + { + if ($this->config->get("inscription_terminees")) + return; + + $this->traiter_donnees_inscription(); + if (!$this->login_deja_pris() && $this->donnees_inscription_valides()) + { + mysql_query("BEGIN TRANSACTION"); + mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $this->participant->info->id); + mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $this->participant->info->id); + $this->set_periodes($this->participant->info->id); + mysql_query("COMMIT"); + //header("Location: /inscrits.html"); + $this->message_utilisateur = "Les modifications ont été enregistrées"; + $page = "inscrits"; // TODO : moche car la page ne va plus correspondre à l'url + } + } + # vote pour des jeux (autorisé même lorsque les inscriptions sont terminées) + else if (isset($_POST['set_jeux_joues']) && $this->participant->valide) + { + $votes = $_POST['votes']; + if (!$votes) + $votes = array(); + + mysql_query("BEGIN TRANSACTION"); + + # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste + $jeu = trim($_POST['jeu']); + if ($jeu !== '') + { + mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')"); + $id = mysql_insert_id(); + if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0 + array_unshift($votes, $id); + } + + # suppression des anciens votes (remplacement par les nouveaux) + mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $this->participant->info->id); + + # traite les trois premiers votes + for ($i = 0; $i < count($votes) && $i < $this->config->get('nb_votes_jeux'); $i++) + { + mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$this->participant->info->id.", ".(int)$votes[$i].")"); + } + + mysql_query("COMMIT"); + } + } - mysql_query("DELETE FROM participations WHERE participant_id = " . (int)$id); - for ($i = 0; $i < count($periodes); $i++) + /** + * Traiter les données de l'inscription (trim par exemple). + */ + private function traiter_donnees_inscription() { - mysql_query(" - INSERT INTO participations (participant_id, periode_id) - VALUES (".$id.", ".(int)$periodes[$i].") - "); + $_POST['pseudo'] = trim($_POST['pseudo']); } -} - -# inscription d'un nouveau participant -if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint()) -{ - traiter_donnees_inscription(); - if (!login_deja_pris() && # vérification des données - donnees_inscription_valides() && - $_POST['accord'] == "on" - ) - { - mysql_query("BEGIN TRANSACTION"); - mysql_query(" - INSERT INTO participants - (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques) - VALUES ( - '".addslashes($_POST['pseudo'])."', - '".addslashes($_POST['pass1'])."', - '".addslashes($_POST['clan_nom'])."', - '".addslashes($_POST['clan_tag'])."', - '".addslashes($_POST['nom'])."', - '".addslashes($_POST['prenom'])."', - '".addslashes($_POST['age'])."', - '".addslashes($_POST['e_mail'])."', - '".addslashes($_POST['remarques'])."' - )" - ); - $id = mysql_insert_id(); - set_periodes($id); - mysql_query("COMMIT"); - - $le_participant = new participant($_POST['pseudo'], $_POST['pass1']); - setcookie("COOKIE_INFO_PATICIPANT", $le_participant->info->id, time() + 31104000); - $page = "bienvenue"; + + private function login_deja_pris() + { + if ($this->participant->valide && strtolower($this->participant->info->pseudo) === strtolower($_POST['pseudo'])) // le pseudo n'a pas changé + return FALSE; + + $loginDejaPris = mysql_fetch_array(mysql_query("SELECT count(*) FROM participants WHERE pseudo = '".addslashes($_POST['pseudo'])."'")); + if ($loginDejaPris[0] > 0) + { + $this->message_utilisateur = "Le pseudo '".$_POST["pseudo"]."' est déjà pris"; + return TRUE; + } + return FALSE; } -} -# un participant modifie ses infos -else if(isset($_POST['modification_participant']) && $le_participant->valide) -{ - traiter_donnees_inscription(); - if (!login_deja_pris() && donnees_inscription_valides()) - { - mysql_query("BEGIN TRANSACTION"); - mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $le_participant->info->id); - mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $le_participant->info->id); - set_periodes($le_participant->info->id); - mysql_query("COMMIT"); - //header("Location: /inscrits.html"); - $message_utilisateur = "Les modifications ont été enregistrées"; - $page = "inscrits"; // TODO : moche car la page ne va plus correspondre à l'url + + /** + * Renvoie TRUE si les données d'une inscription sont valides (POST). + */ + private function donnees_inscription_valides() + { + return + $_POST['pseudo'] != "" && + $_POST['pass1'] != "" && + $_POST['pass1'] == $_POST['pass2'] && + strlen($_POST['pass1']) >= 3 && + $_POST['nom'] != "" && + $_POST['prenom'] != "" && + $_POST['e_mail'] != ""; + } + + /** + * Met à jour les periodes du participant dont l'id est donnée + * en fonction de $_POST["periodes"] + * Attention, cette fonction doit être appelée dans une transaction. + */ + private function set_periodes($id) + { + $periodes = $_POST['periodes']; + if (!$periodes) + $periodes = array(); + + mysql_query("DELETE FROM participations WHERE participant_id = " . (int)$id); + for ($i = 0; $i < count($periodes); $i++) + { + mysql_query(" + INSERT INTO participations (participant_id, periode_id) + VALUES (".$id.", ".(int)$periodes[$i].") + "); + } } -} -# vote pour des jeux -else if (isset($_POST['set_jeux_joues']) && $le_participant->valide) -{ - $votes = $_POST['votes']; - if (!$votes) - $votes = array(); - - mysql_query("BEGIN TRANSACTION"); - - # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste - $jeu = trim($_POST['jeu']); - if ($jeu !== '') - { - mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')"); - $id = mysql_insert_id(); - if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0 - array_unshift($votes, $id); - } - - # suppression des anciens votes (remplacement par les nouveaux) - mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $le_participant->info->id); - - # traite les trois premiers votes - for ($i = 0; $i < count($votes) && $i < $config->get('nb_votes_jeux'); $i++) - { - mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$le_participant->info->id.", ".(int)$votes[$i].")"); - } - - mysql_query("COMMIT"); } + ?>