4 * Controller traite les données envoyées par le client.
9 public $message_utilisateur = NULL;
11 function Controller($participant)
13 $this->participant
= $participant;
15 # inscription d'un nouveau participant
16 if (isset($_POST['inscription']) && !Participant
::nombre_participant_max_atteint())
18 if ($config->get("inscription_terminees"))
21 traiter_donnees_inscription();
22 if (!login_deja_pris() && # vérification des données
23 donnees_inscription_valides() &&
24 $_POST['accord'] == "on"
27 mysql_query("BEGIN TRANSACTION");
29 INSERT INTO participants
30 (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques)
32 '".addslashes($_POST['pseudo'])."',
33 '".addslashes($_POST['pass1'])."',
34 '".addslashes($_POST['clan_nom'])."',
35 '".addslashes($_POST['clan_tag'])."',
36 '".addslashes($_POST['nom'])."',
37 '".addslashes($_POST['prenom'])."',
38 '".addslashes($_POST['age'])."',
39 '".addslashes($_POST['e_mail'])."',
40 '".addslashes($_POST['remarques'])."'
43 $id = mysql_insert_id();
45 mysql_query("COMMIT");
47 $this->participant
= new participant($_POST['pseudo'], $_POST['pass1']);
48 setcookie("COOKIE_INFO_PATICIPANT", $this->participant
->info
->id
, time() +
31104000);
52 # un participant modifie ses infos
53 else if(isset($_POST['modification_participant']) && $this->participant
->valide
)
55 if ($config->get("inscription_terminees"))
58 traiter_donnees_inscription();
59 if (!login_deja_pris() && donnees_inscription_valides())
61 mysql_query("BEGIN TRANSACTION");
62 mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $this->participant
->info
->id
);
63 mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $this->participant
->info
->id
);
64 mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $this->participant
->info
->id
);
65 mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $this->participant
->info
->id
);
66 mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $this->participant
->info
->id
);
67 mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $this->participant
->info
->id
);
68 mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $this->participant
->info
->id
);
69 mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $this->participant
->info
->id
);
70 mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $this->participant
->info
->id
);
71 set_periodes($this->participant
->info
->id
);
72 mysql_query("COMMIT");
73 //header("Location: /inscrits.html");
74 $this->message_utilisateur
= "Les modifications ont été enregistrées";
75 $page = "inscrits"; // TODO : moche car la page ne va plus correspondre à l'url
78 # vote pour des jeux (autorisé même lorsque les inscriptions sont terminées)
79 else if (isset($_POST['set_jeux_joues']) && $this->participant
->valide
)
81 $votes = $_POST['votes'];
85 mysql_query("BEGIN TRANSACTION");
87 # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste
88 $jeu = trim($_POST['jeu']);
91 mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')");
92 $id = mysql_insert_id();
93 if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0
94 array_unshift($votes, $id);
97 # suppression des anciens votes (remplacement par les nouveaux)
98 mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $this->participant
->info
->id
);
100 # traite les trois premiers votes
101 for ($i = 0; $i < count($votes) && $i < $config->get('nb_votes_jeux'); $i++
)
103 mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$this->participant
->info
->id
.", ".(int)$votes[$i].")");
106 mysql_query("COMMIT");
111 * Traiter les données de l'inscription (trim par exemple).
113 private function traiter_donnees_inscription()
115 $_POST['pseudo'] = trim($_POST['pseudo']);
118 private function login_deja_pris()
120 if ($this->participant
->valide
&& strtolower($this->participant
->info
->pseudo
) === strtolower($_POST['pseudo'])) // le pseudo n'a pas changé
123 $loginDejaPris = mysql_fetch_array(mysql_query("SELECT count(*) FROM participants WHERE pseudo = '".addslashes($_POST['pseudo'])."'"));
124 if ($loginDejaPris[0] > 0)
126 $this->message_utilisateur
= "Le pseudo '".$_POST["pseudo"]."' est déjà pris";
133 * Renvoie TRUE si les données d'une inscription sont valides (POST).
135 private function donnees_inscription_valides()
138 $_POST['pseudo'] != "" &&
139 $_POST['pass1'] != "" &&
140 $_POST['pass1'] == $_POST['pass2'] &&
141 strlen($_POST['pass1']) >= 3 &&
142 $_POST['nom'] != "" &&
143 $_POST['prenom'] != "" &&
144 $_POST['e_mail'] != "";
148 * Met à jour les periodes du participant dont l'id est donnée
149 * en fonction de $_POST["periodes"]
150 * Attention, cette fonction doit être appelée dans une transaction.
152 private function set_periodes($id)
154 $periodes = $_POST['periodes'];
158 mysql_query("DELETE FROM participations WHERE participant_id = " . (int)$id);
159 for ($i = 0; $i < count($periodes); $i++
)
162 INSERT INTO participations (participant_id, periode_id)
163 VALUES (".$id.", ".(int)$periodes[$i].")