UTF-8 fixes
[platal.git] / include / validations.inc.php
index 6af52e8..8314d98 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,7 +21,7 @@
 
 define('SIZE_MAX', 32768);
 
-__autoload('XDB');
+require_once dirname(__FILE__) . '/../classes/xdb.php';
 
 /**
  * Iterator class, that lists objects through the database
@@ -52,7 +52,7 @@ class ValidateIterator extends XOrgDBIterator
     // }}}
 }
 
-/** classe "virtuelle" à dériver pour chaque nouvelle implémentation
+/** classe "virtuelle" à dériver pour chaque nouvelle implémentation
  */
 class Validate
 {
@@ -62,6 +62,7 @@ class Validate
     var $prenom;
     var $nom;
     var $promo;
+    var $sexe;
     var $bestalias;
     var $forlife;
 
@@ -73,15 +74,15 @@ class Validate
     var $type;
     var $comments = Array();
     // the validations rules : comments for admins
-    var $rules = "Mieux vaut laisser une demande de validation à un autre admin que de valider une requête illégale ou que de refuser une demande légitime";
+    var $rules = "Mieux vaut laisser une demande de validation à un autre admin que de valider une requête illégale ou que de refuser une demande légitime";
 
     // }}}
     // {{{ constructor
     
     /** constructeur
      * @param       $_uid       user id
-     * @param       $_unique    requête pouvant être multiple ou non
-     * @param       $_type      type de la donnée comme dans le champ type de x4dat.requests
+     * @param       $_unique    requête pouvant être multiple ou non
+     * @param       $_type      type de la donnée comme dans le champ type de x4dat.requests
      */
     function Validate($_uid, $_unique, $_type)
     {
@@ -90,18 +91,18 @@ 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();
     }
     
     // }}}
     // {{{ function submit()
 
-    /** fonction à utiliser pour envoyer les données à la modération
+    /** fonction à utiliser pour envoyer les données à la modération
      * cette fonction supprimme les doublons sur un couple ($user,$type) si $this->unique est vrai
      */
     function submit ()
@@ -132,8 +133,8 @@ 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
+    /** fonction à utiliser pour nettoyer l'entrée de la requête dans la table requests
+     * attention, tout est supprimé si c'est un unique
      */
     function clean ()
     {
@@ -149,21 +150,21 @@ class Validate
     // }}}
     // {{{ function handle_formu()
     
-    /** fonction à réaliser en cas de valistion du formulaire
+    /** fonction à réaliser en cas de valistion du formulaire
      */
     function handle_formu()
     {
         if (Env::has('delete')) {
             $this->clean();
-            $this->trig('requete supprimée');
+            $this->trig('requete supprimée');
             return true;
         }
 
-        // mise à jour des informations
+        // mise à jour des informations
         if (Env::has('edit')) {
             if ($this->handle_editor()) {
                 $this->update();
-                $this->trig('requête mise à jour');
+                $this->trig('requête mise à jour');
                 return true;
             }
             return false;
@@ -177,18 +178,20 @@ 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
+            // 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");
 
             $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";
 
@@ -196,7 +199,7 @@ class Validate
             $mailer->send();
 
             $this->update();
-            $this->trig('commentaire ajouté');
+            $this->trig('commentaire ajouté');
             return true;
         }
 
@@ -204,7 +207,7 @@ class Validate
             if ($this->commit()) {
                 $this->sendmail(true);
                 $this->clean();
-                $this->trig('mail envoyé');
+                $this->trig('mail envoyé');
                 return true;
             } else {
                 $this->trig('erreur lors de la validation');
@@ -216,7 +219,7 @@ class Validate
             if (Env::v('comm')) {
                 $this->sendmail(false);
                 $this->clean();
-                $this->trig('mail envoyé');
+                $this->trig('mail envoyé');
                 return true;
             } else {
                 $this->trig('pas de motivation pour le refus !!!');
@@ -232,17 +235,16 @@ 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";
+              . "\n\nCordialement,\nL'équipe Polytechnique.org\n";
 
         $mailer->setTxtBody(wordwrap($body));
         $mailer->send();
@@ -257,17 +259,17 @@ 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é
-     * @param   $type   le type de la requête
-     * @param   $stamp  le timestamp de la requête
+    /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t
+     * @param   $uid    l'id de l'utilisateur concerné
+     * @param   $type   le type de la requête
+     * @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);
@@ -283,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)
@@ -299,7 +316,7 @@ class Validate
     // }}}
     // {{{ function commit()
     
-    /** fonction à utiliser pour insérer les données dans x4dat
+    /** fonction à utiliser pour insérer les données dans x4dat
      * XXX la fonction est "virtuelle" XXX
      */
     function commit ()
@@ -315,7 +332,7 @@ class Validate
     // }}}
     // {{{ function editor()
 
-    /** nom du formulaire d'édition */
+    /** nom du formulaire d'édition */
     function editor()
     { return null; }
 
@@ -333,7 +350,7 @@ class Validate
     }
 
     // }}}
-    // {{{ function id()
+    // {{{ function id()
 
     function id()
     {
@@ -347,5 +364,5 @@ foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) {
     require_once($file);
 }
 
-/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker: */
+/* vim: set expandtab shiftwidth=4 tabstop=4 softtabstop=4 foldmethod=marker enc=utf-8: */
 ?>