MOD #137 création de classes et suppression de variables globales
[cl7.git] / php / participant.php
diff --git a/php/participant.php b/php/participant.php
new file mode 100644 (file)
index 0000000..f7f1acf
--- /dev/null
@@ -0,0 +1,83 @@
+<?php # coding: utf-8
+
+/**
+  * Représente un participant.
+  */
+class Participant
+{
+   public $info; # Toute les infos du membre sous la forme d'un objet.
+       public $valide; # Savoir si le participant existe.
+
+   static private $NB_VOTES_PAR_PARTICIPANT = 3; # Concerne les votes des jeux joueés.
+       
+   /**
+     * Constructeur, peut être appelé sous trois formes différentes :
+     * 1) $v1 = NULL, $v2 = NULL : participant non-valide
+     * 2) $v1 = id, $v2 = NULL : la participant existe et est chargé à partir de son id
+     * 3) $v1 = pseudo, $v2 = password : le participant existe et est chargé à partir de son pseudo et de son password
+     */
+   function Participant($v1=NULL, $v2=NULL)
+   {      
+      # Aucunes valeurs transmise => ce n'est pas un participant valide.
+          if ($v1 == NULL && $v2 == NULL) 
+      {
+         $this->valide = 0;
+         return;
+      }
+      
+               if (is_string($v1) && is_string($v2)) # Aucun des arguments n'est vide alors c'est le pseudo et le password qui ont été transmis
+                       $res = mysql_query("SELECT * FROM participants WHERE pseudo = '" . addslashes($v1) . "' AND password = '" . addslashes($v2) . "'");
+               else # Sinon c'est l'id
+                       $res = mysql_query("SELECT * FROM participants WHERE id = " . addslashes($v1));
+      
+               if (mysql_error() || mysql_num_rows($res) == 0)
+      {
+         $this->valide = FALSE;
+      }
+      else
+      {
+         $this->info = mysql_fetch_object($res);
+         $this->valide = TRUE; 
+      }
+       }
+   
+   /**
+     * Renvoie le nombre de votes restant pour le participant.
+     */
+   function nb_vote_restant()
+   {
+      $nombre_de_vote = mysql_fetch_array(mysql_query("
+         SELECT COUNT(*) FROM participants RIGHT JOIN jeux_choisis ON participants.id = jeux_choisis.participant_id
+         WHERE participants.id = " . $this->info->id . "
+         GROUP BY participants.id
+      "));
+      
+      return Participant::$NB_VOTES_PAR_PARTICIPANT - $nombre_de_vote[0];
+   }
+
+   /**
+     * Renvois TRUE si le nombre de participant max est atteint.
+     */
+   static function nombre_participant_max_atteint()
+   {
+      global $config;
+      $res_SQL = mysql_query("SELECT COUNT(*) FROM participants");
+      $nb_participant = mysql_fetch_row($res_SQL);
+
+      return $nb_participant[0] >= $config->get('nb_max_participant');
+   }
+   
+   /**
+     * Renvois le nombre de places restantes.
+     */
+   static function nombre_place_restante()
+   {
+      global $config;
+      $res_SQL = mysql_query("SELECT COUNT(*) FROM participants");
+      $nb_participant = mysql_fetch_row($res_SQL);
+      
+      return $config->get('nb_max_participant') - $nb_participant[0];
+   }
+}
+
+?>
\ No newline at end of file