Merge branch 'platal-0.9.16'
[platal.git] / include / validations.inc.php
index 0b1eeac..1b05e67 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2008 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -57,7 +57,7 @@ class ValidateIterator extends XOrgDBIterator
 abstract class Validate
 {
     // {{{ properties
-    
+
     public $uid;
     public $prenom;
     public $nom;
@@ -70,7 +70,7 @@ abstract class Validate
     public $unique;
     // enable the refuse button
     public $refuse = true;
-    
+
     public $type;
     public $comments = Array();
     // the validations rules : comments for admins
@@ -78,7 +78,7 @@ abstract class Validate
 
     // }}}
     // {{{ constructor
-    
+
     /** constructeur
      * @param       $_uid       user id
      * @param       $_unique    requête pouvant être multiple ou non
@@ -98,7 +98,7 @@ abstract class Validate
                   WHERE  u.user_id={?}", $_uid);
         list($this->prenom, $this->nom, $this->promo, $this->sexe, $this->forlife, $this->bestalias) = $res->fetchOneRow();
     }
-    
+
     // }}}
     // {{{ function submit()
 
@@ -110,11 +110,13 @@ abstract class Validate
         if ($this->unique) {
             XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type);
         }
-       
+
         $this->stamp = date('YmdHis');
         XDB::execute('INSERT INTO requests (user_id, type, data, stamp) VALUES ({?}, {?}, {?}, {?})',
                 $this->uid, $this->type, $this, $this->stamp);
 
+        global $globals;
+        update_NbValid();
         return true;
     }
 
@@ -131,24 +133,26 @@ abstract class Validate
 
     // }}}
     // {{{ function clean()
-    
+
     /** fonction à utiliser pour nettoyer l'entrée de la requête dans la table requests
      * attention, tout est supprimé si c'est un unique
      */
     public function clean()
     {
         if ($this->unique) {
-            return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
-                    $this->uid, $this->type);
+            $success = XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
+                                    $this->uid, $this->type);
         } else {
-            return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
-                    $this->uid, $this->type, $this->stamp);
+            $success =  XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?} AND stamp={?}',
+                                      $this->uid, $this->type, $this->stamp);
         }
+        update_NbValid();
+        return $success;
     }
 
     // }}}
     // {{{ function handle_formu()
-    
+
     /** fonction à réaliser en cas de valistion du formulaire
      */
     public function handle_formu()
@@ -184,13 +188,13 @@ abstract class Validate
 
             // envoi d'un mail à hotliners
             global $globals;
-            $mailer = new PlMailer;
+            $mailer = new PlMailer();
             $mailer->setSubject("Commentaires de validation {$this->type}");
             $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}");
-            $mailer->addTo($globals->core->admin_emails);
+            $mailer->addTo($globals->core->admin_email);
 
             $body = "Validation {$this->type} pour {$this->prenom} {$this->nom}\n\n"
-              . S::v('bestalias')." a ajouté le commentaire :\n\n" 
+              . S::v('bestalias')." a ajouté le commentaire :\n\n"
               . Env::v('comm')."\n\n"
               . "cf la discussion sur : ".$globals->baseurl."/admin/validate";
 
@@ -251,13 +255,13 @@ abstract class Validate
 
     // }}}
     // {{{ function trig()
-    
+
     protected function trig($msg)
     {
         global $page;
         $page->trig($msg);
     }
-    
+
     // }}}
     // {{{ function get_typed_request()
 
@@ -309,25 +313,36 @@ abstract class Validate
     }
 
     // }}}
+    // {{{ function get_typed_requests_count()
+
+    /** same as get_typed_requests() but return the count of available requests.
+     */
+    static public function get_typed_requests_count($uid, $type)
+    {
+        $res = XDB::query('SELECT COUNT(data) FROM requests WHERE user_id={?} and type={?}', $uid, $type);
+        return $res->fetchOneCell();
+    }
+
+    // }}}
     // {{{ function _mail_body
 
     abstract protected function _mail_body($isok);
-    
+
     // }}}
     // {{{ function _mail_subj
 
     abstract protected function _mail_subj();
-    
+
     // }}}
     // {{{ function commit()
-    
+
     /** fonction à utiliser pour insérer les données dans x4dat
      */
     abstract public function commit();
 
     // }}}
     // {{{ function formu()
-    
+
     /** nom du template qui contient le formulaire */
     abstract public function formu();