ADD garde-fous dans le controller à propos des inscriptions terminees
[cl7.git] / php / controller.php
1 <?php # coding:utf-8
2 /**
3 * Traite les données envoyées par le client.
4 */
5 include_once("class_participant.php");
6
7 // un message peut être produit par le controlleur
8 $message_utilisateur = NULL;
9
10 /**
11 * Traiter les données de l'inscription (trim par exemple).
12 */
13 function traiter_donnees_inscription()
14 {
15 $_POST['pseudo'] = trim($_POST['pseudo']);
16 }
17
18 function login_deja_pris()
19 {
20 global $le_participant;
21 global $message_utilisateur;
22 if ($le_participant->valide && strtolower($le_participant->info->pseudo) === strtolower($_POST['pseudo'])) // le pseudo n'a pas changé
23 return FALSE;
24
25 $loginDejaPris = mysql_fetch_array(mysql_query("SELECT count(*) FROM participants WHERE pseudo = '".addslashes($_POST['pseudo'])."'"));
26 if ($loginDejaPris[0] > 0)
27 {
28 $message_utilisateur = "Le pseudo '".$_POST["pseudo"]."' est déjà pris";
29 return TRUE;
30 }
31 return FALSE;
32 }
33
34 /**
35 * Renvoie TRUE si les données d'une inscription sont valides (POST).
36 */
37 function donnees_inscription_valides()
38 {
39 return
40 $_POST['pseudo'] != "" &&
41 $_POST['pass1'] != "" &&
42 $_POST['pass1'] == $_POST['pass2'] &&
43 strlen($_POST['pass1']) >= 3 &&
44 $_POST['nom'] != "" &&
45 $_POST['prenom'] != "" &&
46 $_POST['e_mail'] != "";
47 }
48
49 /**
50 * Met à jour les periodes du participant dont l'id est donnée
51 * en fonction de $_POST["periodes"]
52 * Attention, cette fonction doit être appelée dans une transaction.
53 */
54 function set_periodes($id)
55 {
56 $periodes = $_POST['periodes'];
57 if (!$periodes)
58 $periodes = array();
59
60 mysql_query("DELETE FROM participations WHERE participant_id = " . (int)$id);
61 for ($i = 0; $i < count($periodes); $i++)
62 {
63 mysql_query("
64 INSERT INTO participations (participant_id, periode_id)
65 VALUES (".$id.", ".(int)$periodes[$i].")
66 ");
67 }
68 }
69
70 # inscription d'un nouveau participant
71 if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint())
72 {
73 if ($config->get("inscription_terminees"))
74 return;
75
76 traiter_donnees_inscription();
77 if (!login_deja_pris() && # vérification des données
78 donnees_inscription_valides() &&
79 $_POST['accord'] == "on"
80 )
81 {
82 mysql_query("BEGIN TRANSACTION");
83 mysql_query("
84 INSERT INTO participants
85 (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques)
86 VALUES (
87 '".addslashes($_POST['pseudo'])."',
88 '".addslashes($_POST['pass1'])."',
89 '".addslashes($_POST['clan_nom'])."',
90 '".addslashes($_POST['clan_tag'])."',
91 '".addslashes($_POST['nom'])."',
92 '".addslashes($_POST['prenom'])."',
93 '".addslashes($_POST['age'])."',
94 '".addslashes($_POST['e_mail'])."',
95 '".addslashes($_POST['remarques'])."'
96 )"
97 );
98 $id = mysql_insert_id();
99 set_periodes($id);
100 mysql_query("COMMIT");
101
102 $le_participant = new participant($_POST['pseudo'], $_POST['pass1']);
103 setcookie("COOKIE_INFO_PATICIPANT", $le_participant->info->id, time() + 31104000);
104 $page = "bienvenue";
105 }
106 }
107 # un participant modifie ses infos
108 else if(isset($_POST['modification_participant']) && $le_participant->valide)
109 {
110 if ($config->get("inscription_terminees"))
111 return;
112
113 traiter_donnees_inscription();
114 if (!login_deja_pris() && donnees_inscription_valides())
115 {
116 mysql_query("BEGIN TRANSACTION");
117 mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $le_participant->info->id);
118 mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $le_participant->info->id);
119 mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $le_participant->info->id);
120 mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $le_participant->info->id);
121 mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $le_participant->info->id);
122 mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $le_participant->info->id);
123 mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $le_participant->info->id);
124 mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $le_participant->info->id);
125 mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $le_participant->info->id);
126 set_periodes($le_participant->info->id);
127 mysql_query("COMMIT");
128 //header("Location: /inscrits.html");
129 $message_utilisateur = "Les modifications ont été enregistrées";
130 $page = "inscrits"; // TODO : moche car la page ne va plus correspondre à l'url
131 }
132 }
133 # vote pour des jeux (autorisé même lorsque les inscriptions sont terminées)
134 else if (isset($_POST['set_jeux_joues']) && $le_participant->valide)
135 {
136 $votes = $_POST['votes'];
137 if (!$votes)
138 $votes = array();
139
140 mysql_query("BEGIN TRANSACTION");
141
142 # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste
143 $jeu = trim($_POST['jeu']);
144 if ($jeu !== '')
145 {
146 mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')");
147 $id = mysql_insert_id();
148 if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0
149 array_unshift($votes, $id);
150 }
151
152 # suppression des anciens votes (remplacement par les nouveaux)
153 mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $le_participant->info->id);
154
155 # traite les trois premiers votes
156 for ($i = 0; $i < count($votes) && $i < $config->get('nb_votes_jeux'); $i++)
157 {
158 mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$le_participant->info->id.", ".(int)$votes[$i].")");
159 }
160
161 mysql_query("COMMIT");
162 }
163 ?>