ADD informations concernant les jours pendant lesquels les participants sont présent...
[cl7.git] / php / controller.php
index ff47132..75a4668 100644 (file)
@@ -3,6 +3,33 @@
   * Traite les données envoyées par le client.\r
   */\r
 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;   
+}
 \r
 /**\r
   * Renvoie TRUE si les données d'une inscription sont valides (POST).\r
@@ -17,13 +44,34 @@ function donnees_inscription_valides()
       $_POST['nom'] != "" &&\r
       $_POST['prenom'] != "" &&\r
       $_POST['e_mail'] != "";\r
+}
+
+/**
+  * 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].")
+      ");
+   }
 }\r
 \r
-# insciption d'un nouveau participant
+# inscription d'un nouveau participant
 if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint())
-{              \r
-   # vérification des données\r
-   if (\r
+{              
+   traiter_donnees_inscription();
+   if (!login_deja_pris() && # vérification des données\r
       donnees_inscription_valides() &&\r
       $_POST['accord'] == "on"\r
    )\r
@@ -43,17 +91,21 @@ if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint
             '".addslashes($_POST['e_mail'])."',\r
             '".addslashes($_POST['remarques'])."'\r
          )"\r
-      );\r
-      mysql_query("COMMIT");\r
-   }\r
+      );
+      $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";\r
+   }
 }
 # un participant modifie ses infos
 else if(isset($_POST['modification_participant']) && $le_participant->valide)
-{\r
-   if (donnees_inscription_valides())\r
+{
+   traiter_donnees_inscription();
+   if (!login_deja_pris() && donnees_inscription_valides())\r
    {\r
       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);\r
-      mysql_query("COMMIT");\r
+      mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $le_participant->info->id);
+      set_periodes($le_participant->info->id);\r
+      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\r
    }
 }\r
 # vote pour des jeux\r