X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=php%2Fcontroller.php;h=5a40098e033b643fd4b5ec302b3367e19e734a6d;hb=d795f4b57777e1b38037b8ea894ef211182903f2;hp=ff4713273668dc4315169259f5f263dfaeda08fa;hpb=27f3004da65f2b5803709b3fa76a791c9b38a0c9;p=cl7.git diff --git a/php/controller.php b/php/controller.php index ff47132..5a40098 100644 --- a/php/controller.php +++ b/php/controller.php @@ -3,6 +3,33 @@ * Traite les données envoyées par le client. */ include_once("class_participant.php"); + +// un message peut être produit par le controlleur +$message_utilisateur = NULL; + +/** + * Traiter les données de l'inscription (trim par exemple). + */ +function traiter_donnees_inscription() +{ + $_POST['pseudo'] = trim($_POST['pseudo']); +} + +function login_deja_pris() +{ + global $le_participant; + global $message_utilisateur; + if ($le_participant->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) + { + $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). @@ -17,13 +44,34 @@ function donnees_inscription_valides() $_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. + */ +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].") + "); + } } -# insciption d'un nouveau participant +# inscription d'un nouveau participant if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint()) -{ - # vérification des données - if ( +{ + traiter_donnees_inscription(); + if (!login_deja_pris() && # vérification des données donnees_inscription_valides() && $_POST['accord'] == "on" ) @@ -43,17 +91,21 @@ if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint '".addslashes($_POST['e_mail'])."', '".addslashes($_POST['remarques'])."' )" - ); - mysql_query("COMMIT"); - } + ); + $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); + $le_participant = new participant($_POST['pseudo'], $_POST['pass1']); + setcookie("COOKIE_INFO_PATICIPANT", $le_participant->info->id, time() + 31104000); + $page = "bienvenue"; + } } # un participant modifie ses infos else if(isset($_POST['modification_participant']) && $le_participant->valide) -{ - if (donnees_inscription_valides()) +{ + 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); @@ -64,8 +116,12 @@ else if(isset($_POST['modification_participant']) && $le_participant->valide) 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); - mysql_query("COMMIT"); + 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 } } # vote pour des jeux @@ -91,7 +147,7 @@ else if (isset($_POST['set_jeux_joues']) && $le_participant->valide) 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 < $NB_VOTES_JEUX ; $i++) + 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].")"); }