Merge commit 'origin/master' into account
[platal.git] / include / validations.inc.php
index 734a407..050318c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2010 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -42,7 +42,7 @@ class ValidateIterator extends XOrgDBIterator
     public function next ()
     {
         if (list($result, $stamp) = parent::next()) {
-            $result = unserialize($result);
+            $result = Validate::unserialize($result);
             $result->stamp = $stamp;
             return($result);
         } else {
@@ -85,6 +85,7 @@ abstract class Validate
         $this->stamp  = date('YmdHis');
         $this->unique = $_unique;
         $this->type   = $_type;
+        $this->promo  = $this->user->promo();
     }
 
     // }}}
@@ -183,7 +184,7 @@ abstract class Validate
             $mailer->setFrom("validation+{$this->type}@{$globals->mail->domain}");
             $mailer->addTo($globals->core->admin_email);
 
-            $body = "Validation {$this->type} pour {$this->user->id()}\n\n"
+            $body = "Validation {$this->type} pour {$this->user->login()}\n\n"
               . S::user()->login() . " a ajouté le commentaire :\n\n"
               . Env::v('comm') . "\n\n"
               . "cf la discussion sur : " . $globals->baseurl . "/admin/validate";
@@ -215,7 +216,7 @@ abstract class Validate
                 $this->trigSuccess('Email de refus envoyé');
                 return true;
             } else {
-                $this->trigError('pas de motivation pour le refus !!!');
+                $this->trigError('Pas de motivation pour le refus&nbsp;!!!');
             }
         }
 
@@ -236,8 +237,9 @@ abstract class Validate
 
         $body = ($this->user->isFemale() ? "Chère camarade,\n\n" : "Cher camarade,\n\n")
               . $this->_mail_body($isok)
-              . (Env::has('comm') ? "\n\n".Env::v('comm') : '')
-              . "\n\nCordialement,\n\n-- \nL'équipe de Polytechnique.org\n";
+              . (Env::has('comm') ? "\n\n" . Env::v('comm') : '')
+              . "\n\nCordialement,\n-- \nL'équipe de Polytechnique.org\n"
+              . $this->_mail_ps($isok);
 
         $mailer->setTxtBody(wordwrap($body));
         $mailer->send();
@@ -280,7 +282,7 @@ abstract class Validate
             $res = XDB::query('SELECT data, DATE_FORMAT(stamp, "%Y%m%d%H%i%s") FROM requests WHERE user_id={?} AND type={?} and stamp={?}', $uid, $type, $stamp);
         }
         if ($result = $res->fetchOneCell()) {
-            $result = unserialize($result);
+            $result = Validate::unserialize($result);
         } else {
             $result = false;
         }
@@ -306,7 +308,7 @@ abstract class Validate
         $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
         $array = array();
         while (list($data) = $res->next()) {
-            $array[] = unserialize($data);
+            $array[] = Validate::unserialize($data);
         }
         return $array;
     }
@@ -333,6 +335,14 @@ abstract class Validate
     abstract protected function _mail_subj();
 
     // }}}
+    // {{{ function _mail_ps
+
+    protected function _mail_ps($isok)
+    {
+        return '';
+    }
+
+    // }}}
     // {{{ function commit()
 
     /** fonction à utiliser pour insérer les données dans x4dat
@@ -363,7 +373,7 @@ abstract class Validate
         static $answers_table;
         if (!isset($answers_table[$this->type])) {
             $r = XDB::query("SELECT id, title, answer FROM requests_answers WHERE category = {?}", $this->type);
-            $answers_table[$this->type] = $r->fetchAllAssoc($r);
+            $answers_table[$this->type] = $r->fetchAllAssoc();
         }
         return $answers_table[$this->type];
     }
@@ -385,6 +395,17 @@ abstract class Validate
     }
 
     // }}}
+    // {{{ function unserialize()
+    public static function unserialize($data)
+    {
+        $obj = unserialize($data);
+        /* XXX: Temporary for hruid migration */
+        if (!isset($obj->user) || !is_object($obj)) {
+            $obj->user =& User::get($obj->forlife);
+        }
+        /* XXX: End temporary block */
+        return $obj;
+    }
 }
 
 foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) {