4 * Controller traite les données envoyées par le client.
8 public $message_utilisateur = NULL;
9 public $nouvel_inscrit = FALSE;
14 public function Controller($participant, $config)
16 $this->participant
= $participant;
17 $this->config
= $config;
19 # inscription d'un nouveau participant
20 if (isset($_POST['inscription']) && !Participant
::nombre_participant_max_atteint())
22 if ($this->config
->get("inscription_terminees"))
25 $this->traiter_donnees_inscription();
26 if (!$this->login_deja_pris() && # vérification des données
27 $this->donnees_inscription_valides() &&
28 $_POST['accord'] == "on"
31 mysql_query("BEGIN TRANSACTION");
33 INSERT INTO participants
34 (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques)
36 '".addslashes($_POST['pseudo'])."',
37 '".addslashes($_POST['pass1'])."',
38 '".addslashes($_POST['clan_nom'])."',
39 '".addslashes($_POST['clan_tag'])."',
40 '".addslashes($_POST['nom'])."',
41 '".addslashes($_POST['prenom'])."',
42 '".addslashes($_POST['age'])."',
43 '".addslashes($_POST['e_mail'])."',
44 '".addslashes($_POST['remarques'])."'
47 $id = mysql_insert_id();
48 $this->set_periodes($id);
49 mysql_query("COMMIT");
51 $this->participant
= new participant($_POST['pseudo'], $_POST['pass1']);
52 setcookie("COOKIE_INFO_PARTICIPANT", $this->participant
->info
->id
, time() +
31104000);
53 $this->nouvel_inscrit
= TRUE;
56 # un participant modifie ses infos
57 else if(isset($_POST['modification_participant']) && $this->participant
->valide
)
59 if ($this->config
->get("inscription_terminees"))
62 $this->traiter_donnees_inscription();
63 if (!$this->login_deja_pris() && $this->donnees_inscription_valides())
65 mysql_query("BEGIN TRANSACTION");
66 mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $this->participant
->info
->id
);
67 mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $this->participant
->info
->id
);
68 mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $this->participant
->info
->id
);
69 mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $this->participant
->info
->id
);
70 mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $this->participant
->info
->id
);
71 mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $this->participant
->info
->id
);
72 mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $this->participant
->info
->id
);
73 mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $this->participant
->info
->id
);
74 mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $this->participant
->info
->id
);
75 $this->set_periodes($this->participant
->info
->id
);
76 mysql_query("COMMIT");
77 //header("Location: /inscrits.html");
78 $this->message_utilisateur
= "Les modifications ont été enregistrées";
79 $page = "inscrits"; // TODO : moche car la page ne va plus correspondre à l'url
82 # vote pour des jeux (autorisé même lorsque les inscriptions sont terminées)
83 else if (isset($_POST['set_jeux_joues']) && $this->participant
->valide
)
85 $votes = $_POST['votes'];
89 mysql_query("BEGIN TRANSACTION");
91 # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste
92 $jeu = trim($_POST['jeu']);
95 mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')");
96 $id = mysql_insert_id();
97 if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0
98 array_unshift($votes, $id);
101 # suppression des anciens votes (remplacement par les nouveaux)
102 mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $this->participant
->info
->id
);
104 # traite les trois premiers votes
105 for ($i = 0; $i < count($votes) && $i < $this->config
->get('nb_votes_jeux'); $i++
)
107 mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$this->participant
->info
->id
.", ".(int)$votes[$i].")");
110 mysql_query("COMMIT");
115 * Traiter les données de l'inscription (trim par exemple).
117 private function traiter_donnees_inscription()
119 $_POST['pseudo'] = trim($_POST['pseudo']);
122 private function login_deja_pris()
124 if ($this->participant
->valide
&& strtolower($this->participant
->info
->pseudo
) === strtolower($_POST['pseudo'])) // le pseudo n'a pas changé
127 $loginDejaPris = mysql_fetch_array(mysql_query("SELECT count(*) FROM participants WHERE pseudo = '".addslashes($_POST['pseudo'])."'"));
128 if ($loginDejaPris[0] > 0)
130 $this->message_utilisateur
= "Le pseudo '".$_POST["pseudo"]."' est déjà pris";
137 * Renvoie TRUE si les données d'une inscription sont valides (POST).
139 private function donnees_inscription_valides()
142 $_POST['pseudo'] != "" &&
143 $_POST['pass1'] != "" &&
144 $_POST['pass1'] == $_POST['pass2'] &&
145 strlen($_POST['pass1']) >= 3 &&
146 $_POST['nom'] != "" &&
147 $_POST['prenom'] != "" &&
148 $_POST['e_mail'] != "";
152 * Met à jour les periodes du participant dont l'id est donnée
153 * en fonction de $_POST["periodes"]
154 * Attention, cette fonction doit être appelée dans une transaction.
156 private function set_periodes($id)
158 $periodes = $_POST['periodes'];
162 mysql_query("DELETE FROM participations WHERE participant_id = " . (int)$id);
163 for ($i = 0; $i < count($periodes); $i++
)
166 INSERT INTO participations (participant_id, periode_id)
167 VALUES (".$id.", ".(int)$periodes[$i].")