2006 => 2007 Happy New Year\!
[platal.git] / include / validations.inc.php
index a49edce..b00fef3 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2006 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -21,6 +21,8 @@
 
 define('SIZE_MAX', 32768);
 
+require_once dirname(__FILE__) . '/../classes/xdb.php';
+
 /**
  * Iterator class, that lists objects through the database
  */
@@ -30,7 +32,7 @@ class ValidateIterator extends XOrgDBIterator
 
     function ValidateIterator ()
     {
-        parent::XOrgDBIterator('SELECT data,stamp FROM requests ORDER BY stamp', MYSQL_NUM);
+        parent::__construct('SELECT data,stamp FROM requests ORDER BY stamp', MYSQL_NUM);
     }
 
     // }}}
@@ -60,6 +62,7 @@ class Validate
     var $prenom;
     var $nom;
     var $promo;
+    var $sexe;
     var $bestalias;
     var $forlife;
 
@@ -88,12 +91,12 @@ class Validate
         $this->unique = $_unique;
         $this->type   = $_type;
         $res = XDB::query(
-                "SELECT  u.prenom, u.nom, u.promo, a.alias, b.alias
+                "SELECT  u.prenom, u.nom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe, a.alias, b.alias
                    FROM  auth_user_md5 AS u
              INNER JOIN  aliases       AS a ON ( u.user_id=a.id AND a.type='a_vie' )
              INNER JOIN  aliases       AS b ON ( u.user_id=b.id AND b.type!='homonyme' AND FIND_IN_SET('bestalias', b.flags) )
                   WHERE  u.user_id={?}", $_uid);
-        list($this->prenom, $this->nom, $this->promo, $this->forlife, $this->bestalias) = $res->fetchOneRow();
+        list($this->prenom, $this->nom, $this->promo, $this->sexe, $this->forlife, $this->bestalias) = $res->fetchOneRow();
     }
     
     // }}}
@@ -175,12 +178,14 @@ class Validate
                     return true;
                 }
             }
+            if (!strlen(trim(Env::v('comm')))) {
+                return true;
+            }
             $this->comments[] = Array(S::v('bestalias'), Env::v('comm'), $formid);
 
             // envoi d'un mail à hotliners
             global $globals;
-            require_once('diogenes/diogenes.hermes.inc.php');
-            $mailer = new HermesMailer;
+            $mailer = new PlMailer;
             $mailer->setSubject("Commentaires de validation {$this->type}");
             $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}");
             $mailer->addTo("hotliners@staff.polytechnique.org");
@@ -230,14 +235,13 @@ class Validate
     function sendmail($isok)
     {
         global $globals;
-        require_once('diogenes/diogenes.hermes.inc.php');
-        $mailer = new HermesMailer;
+        $mailer = new PlMailer();
         $mailer->setSubject($this->_mail_subj());
         $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}");
         $mailer->addTo("\"{$this->prenom} {$this->nom}\" <{$this->bestalias}@{$globals->mail->domain}>");
         $mailer->addCc("validation+{$this->type}@{$globals->mail->domain}");
 
-        $body = "Cher(e) camarade,\n\n"
+        $body = ($this->sexe ? "Chère camarade,\n\n" : "Cher camarade,\n\n")
               . $this->_mail_body($isok)
               . (Env::has('comm') ? "\n\n".Env::v('comm') : '')
               . "\n\nCordialement,\nL'équipe Polytechnique.org\n";
@@ -255,7 +259,7 @@ class Validate
     }
     
     // }}}
-    // {{{ function get_request()
+    // {{{ function get_typed_request()
 
     /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t
      * @param   $uid    l'id de l'utilisateur concerné
@@ -263,9 +267,9 @@ class Validate
      * @param   $stamp  le timestamp de la requête
      *
      * XXX fonction "statique" XXX
-     * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_request(...)
+     * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...)
      */
-    function get_request($uid, $type, $stamp = -1)
+    static function get_typed_request($uid, $type, $stamp = -1)
     {
         if ($stamp == -1) {
             $res = XDB::query('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
@@ -281,6 +285,21 @@ class Validate
     }
 
     // }}}
+    // {{{ function get_typed_requests()
+
+    /** same as get_typed_request() but return an array of objects
+     */
+    static function get_typed_requests($uid, $type)
+    {
+        $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
+        $array = array();
+        while (list($data) = $res->next()) {
+            $array[] = unserialize($data);
+        }
+        return $array;
+    }
+
+    // }}}
     // {{{ function _mail_body
 
     function _mail_body($isok)