Adapts email related user defined parameters to the new mail chain.
[platal.git] / include / validations / aliases.inc.php
index a252eb7..2cf9509 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -24,28 +24,25 @@ class AliasReq extends Validate
 {
     // properties {{{2
     public $alias;
-    public $raison;
+    public $reason;
     public $unique = true;
 
-    public $old    = '';
+    public $old;
     public $public = 'private';
 
-    public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@, ...),
+    public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@&hellip;),
                   les alias vulgaires, et les prenom.nom (sauf si c'est pour l'utilisateur prenom.nom).
-                  Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit";
+                  Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit.";
 
     // constructor {{{2
-    public function __construct(User &$_user, $_alias, $_raison, $_public, $_stamp=0)
+    public function __construct(User $_user, $_alias, $_reason, $_public, $_old, $_stamp = 0)
     {
         global $globals;
         parent::__construct($_user, true, 'alias', $_stamp);
-        $this->alias  = $_alias.'@'.$globals->mail->alias_dom;
-        $this->raison = $_raison;
+        $this->alias  = $_alias;
+        $this->reason = $_reason;
         $this->public = $_public;
-        $this->old    = $user->emailAlias();
-        if (empty($this->old)) {
-            unset($this->old);
-        }
+        $this->old    = $_old;
     }
 
     // function get_request() {{{2
@@ -63,23 +60,27 @@ class AliasReq extends Validate
     // function _mail_subj {{{2
     protected function _mail_subj()
     {
-        return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}";
+        global $globals;
+        return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}@{$globals->mail->alias_dom}";
     }
 
     // function _mail_body {{{2
     protected function _mail_body($isok)
     {
+        global $globals;
         if ($isok) {
-            return "  L'adresse email {$this->alias} que tu avais demandée vient d'être créée, tu peux désormais l'utiliser à ta convenance."
-                 . ($this->public == 'public' ? ' A ta demande, cette adresse apparaît maintenant sur ta fiche.' : '');
+            return "  L'adresse email {$this->alias}@{$globals->mail->alias_dom} que tu avais demandée vient d'être créée, tu peux désormais l'utiliser à ta convenance."
+                 . ($this->public == 'public' ? ' À ta demande, cette adresse apparaît maintenant sur ta fiche.' : '');
         } else {
-            return "  La demande que tu avais faite pour l'alias {$this->alias} a été refusée.";
+            return "  La demande que tu avais faite pour l'alias {$this->alias}@{$globals->mail->alias_dom} a été refusée.";
         }
     }
 
     // function commit() {{{2
     public function commit()
     {
+        global $globals;
+
         if ($this->user->hasProfile()) {
             XDB::execute('UPDATE  profiles
                              SET  alias_pub = {?}
@@ -88,19 +89,20 @@ class AliasReq extends Validate
         }
 
         if ($this->old) {
-            return XDB::execute('UPDATE  virtual
-                                    SET  alias = {?}
-                                  WHERE  alias = {?}',
-                                $this->alias, $this->old);
+            $success = XDB::execute('UPDATE  email_source_account AS s
+                                 INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
+                                        SET  s.email = {?}
+                                      WHERE  s.uid = {?} AND d.name = {?}',
+                                    $this->alias, $this->user->id(), $globals->mail->alias_dom);
         } else {
-            XDB::execute('INSERT INTO  virtual
-                                  SET  alias = {?}, type=\'user\'',
-                         $this->alias);
-            $vid = XDB::insertId();
-            return XDB::execute('INSERT INTO  virtual_redirect (vid, redirect)
-                                      VALUES  ({?}, {?})',
-                                $vid, $this->user->forlifeEmail());
+            $success = XDB::execute('INSERT INTO  email_source_account (email, uid, domain, type, flags)
+                                          SELECT  {?}, {?}, id, \'alias\', \'\'
+                                            FROM  email_virtual_domains
+                                           WHERE  name = {?}',
+                                     $this->alias, $this->user->id(), $globals->mail->alias_dom);
         }
+
+        return $success;
     }
 }