Fix GoogleMaps links
[platal.git] / include / validations.inc.php
index 8314d98..35c88c2 100644 (file)
@@ -30,15 +30,15 @@ class ValidateIterator extends XOrgDBIterator
 {
     // {{{ constuctor
 
-    function ValidateIterator ()
+    public function __construct ()
     {
-        parent::__construct('SELECT data,stamp FROM requests ORDER BY stamp', MYSQL_NUM);
+        parent::__construct('SELECT data, DATE_FORMAT(stamp, "%Y%m%d%H%i%s") FROM requests ORDER BY stamp', MYSQL_NUM);
     }
 
     // }}}
     // {{{ function next()
 
-    function next ()
+    public function next ()
     {
         if (list($result, $stamp) = parent::next()) {
             $result = unserialize($result);
@@ -54,27 +54,27 @@ class ValidateIterator extends XOrgDBIterator
 
 /** classe "virtuelle" à dériver pour chaque nouvelle implémentation
  */
-class Validate
+abstract class Validate
 {
     // {{{ properties
     
-    var $uid;
-    var $prenom;
-    var $nom;
-    var $promo;
-    var $sexe;
-    var $bestalias;
-    var $forlife;
-
-    var $stamp;
-    var $unique;
+    public $uid;
+    public $prenom;
+    public $nom;
+    public $promo;
+    public $sexe;
+    public $bestalias;
+    public $forlife;
+
+    public $stamp;
+    public $unique;
     // enable the refuse button
-    var $refuse = true;
+    public $refuse = true;
     
-    var $type;
-    var $comments = Array();
+    public $type;
+    public $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";
+    public $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
@@ -84,7 +84,7 @@ class Validate
      * @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)
+    public function __construct($_uid, $_unique, $_type)
     {
         $this->uid    = $_uid;
         $this->stamp  = date('YmdHis');
@@ -105,7 +105,7 @@ class Validate
     /** 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 ()
+    public function submit()
     {
         if ($this->unique) {
             XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}', $this->uid, $this->type);
@@ -121,12 +121,11 @@ class Validate
     // }}}
     // {{{ function update()
 
-    function update ()
+    protected function update()
     {
         XDB::execute('UPDATE requests SET data={?}, stamp=stamp
-                                 WHERE user_id={?} AND type={?} AND stamp={?}',
-                                 $this, $this->uid, $this->type, $this->stamp);
-
+                       WHERE user_id={?} AND type={?} AND stamp={?}',
+                     $this, $this->uid, $this->type, $this->stamp);
         return true;
     }
 
@@ -136,7 +135,7 @@ class Validate
     /** 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 ()
+    public function clean()
     {
         if ($this->unique) {
             return XDB::execute('DELETE FROM requests WHERE user_id={?} AND type={?}',
@@ -152,7 +151,7 @@ class Validate
     
     /** fonction à réaliser en cas de valistion du formulaire
      */
-    function handle_formu()
+    public function handle_formu()
     {
         if (Env::has('delete')) {
             $this->clean();
@@ -232,7 +231,7 @@ class Validate
     // }}}
     // {{{ function sendmail
 
-    function sendmail($isok)
+    protected function sendmail($isok)
     {
         global $globals;
         $mailer = new PlMailer();
@@ -253,7 +252,8 @@ class Validate
     // }}}
     // {{{ function trig()
     
-    function trig($msg) {
+    protected function trig($msg)
+    {
         global $page;
         $page->trig($msg);
     }
@@ -269,12 +269,12 @@ class Validate
      * XXX fonction "statique" XXX
      * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_typed_request(...)
      */
-    static function get_typed_request($uid, $type, $stamp = -1)
+    static public 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);
         } else {
-            $res = XDB::query("SELECT data, stamp FROM requests WHERE user_id={?} AND type={?} and stamp={?}", $uid, $type, $stamp);
+            $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);
@@ -285,11 +285,20 @@ class Validate
     }
 
     // }}}
+    // {{{ function get_request_by_id()
+
+    static public function get_request_by_id($id)
+    {
+        list($uid, $type, $stamp) = explode('_', $id, 3);
+        return Validate::get_typed_request($uid, $type, $stamp);
+    }
+
+    // }}}
     // {{{ function get_typed_requests()
 
     /** same as get_typed_request() but return an array of objects
      */
-    static function get_typed_requests($uid, $type)
+    static public function get_typed_requests($uid, $type)
     {
         $res = XDB::iterRow('SELECT data FROM requests WHERE user_id={?} and type={?}', $uid, $type);
         $array = array();
@@ -302,45 +311,41 @@ class Validate
     // }}}
     // {{{ function _mail_body
 
-    function _mail_body($isok)
-    {
-    }
+    abstract protected function _mail_body($isok);
     
     // }}}
     // {{{ function _mail_subj
 
-    function _mail_subj()
-    {
-    }
+    abstract protected function _mail_subj();
     
     // }}}
     // {{{ function commit()
     
     /** fonction à utiliser pour insérer les données dans x4dat
-     * XXX la fonction est "virtuelle" XXX
      */
-    function commit ()
-    { }
+    abstract public function commit();
 
     // }}}
     // {{{ function formu()
     
     /** nom du template qui contient le formulaire */
-    function formu()
-    { return null; }
+    abstract public function formu();
 
     // }}}
     // {{{ function editor()
 
     /** nom du formulaire d'édition */
-    function editor()
-    { return null; }
+    public function editor()
+    {
+        return null;
+    }
 
     // }}}
     // {{{ function answers()
 
     /** automatic answers table for this type of validation */
-    function answers() {
+    public function answers()
+    {
         static $answers_table;
         if (!isset($answers_table[$this->type])) {
             $r = XDB::query("SELECT id, title, answer FROM requests_answers WHERE category = {?}", $this->type);
@@ -352,12 +357,20 @@ class Validate
     // }}}
     // {{{ function id()
 
-    function id()
+    public function id()
     {
         return $this->uid . '_' . $this->type . '_' . $this->stamp;
     }
 
     // }}}
+    // {{{ function ruleText()
+
+    public function ruleText()
+    {
+        return str_replace('\'', '\\\'', $this->rules);
+    }
+
+    // }}}
 }
 
 foreach (glob(dirname(__FILE__).'/validations/*.inc.php') as $file) {