MOD #137 création de classes et suppression de variables globales
[cl7.git] / php / controller.php
index bec8917..5d83bab 100644 (file)
-<?php # coding:utf-8
-/**
-  * 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;
+<?php # coding: utf-8
 
 /**
-  * Traiter les données de l'inscription (trim par exemple).
-  */
-function traiter_donnees_inscription()
+  * Controller traite les données envoyées par le client.
+  */  
+class Controller
 {
-   $_POST['pseudo'] = trim($_POST['pseudo']);
-}
+   private $participant;
+   public $message_utilisateur = NULL;
 
-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)
+   function Controller($participant)
    {
-      $message_utilisateur = "Le pseudo '".$_POST["pseudo"]."' est déjà pris";
-      return TRUE;
-   }
-   return FALSE;   
-}
+      $this->participant = $participant;
+   
+      # inscription d'un nouveau participant
+      if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint())
+      {                
+         if ($config->get("inscription_terminees"))
+            return;
 
-/**
-  * 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'] != "";
-}
+         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");
+         
+            $this->participant = new participant($_POST['pseudo'], $_POST['pass1']);
+            setcookie("COOKIE_INFO_PATICIPANT", $this->participant->info->id, time() + 31104000);
+            $page = "bienvenue";
+         }
+      }
+      # un participant modifie ses infos
+      else if(isset($_POST['modification_participant']) && $this->participant->valide)
+      {   
+         if ($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();
+         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 = " . $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);
+            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 < $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())
-{              
-   if ($config->get("inscription_terminees"))
-      return;
 
-   traiter_donnees_inscription();
-   if (!login_deja_pris() && # vérification des données
-      donnees_inscription_valides() &&
-      $_POST['accord'] == "on"
-   )
+   private function login_deja_pris()
    {
-      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";
+      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)
-{   
-   if ($config->get("inscription_terminees"))
-      return;
 
-   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
-   }
-}
-# vote pour des jeux (autorisé même lorsque les inscriptions sont terminées)
-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 !== '')
+   /**
+     * Renvoie TRUE si les données d'une inscription sont valides (POST).
+     */
+   private function donnees_inscription_valides()
    {
-      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);
+      return
+         $_POST['pseudo'] != "" &&
+         $_POST['pass1'] != "" &&
+         $_POST['pass1'] == $_POST['pass2'] &&
+         strlen($_POST['pass1']) >= 3 &&
+         $_POST['nom'] != "" &&
+         $_POST['prenom'] != "" &&
+         $_POST['e_mail'] != "";
    }
-   
-   # 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++)
+   /**
+     * 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)
    {
-      mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$le_participant->info->id.", ".(int)$votes[$i].")");
+      $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].")
+         ");
+      }
    }
-   
-   mysql_query("COMMIT");
 }
+
 ?>