Merge commit 'origin/master' into fusionax
[platal.git] / include / validations / listes.inc.php
index 35b79de..07003d8 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2008 Polytechnique.org                              *
+ *  Copyright (C) 2003-2009 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -38,14 +38,14 @@ class ListeReq extends Validate
     public $members;
 
     public $rules = "Refuser les listes de binets si elles ne sont pas datées (oui : apv2002@, non : apv@).
-        Refuser également des listes qui pourraient nous servir (admin, postmaster,...)";
+        Refuser également des listes qui pourraient nous servir (admin, postmaster&hellip;)";
     // }}}
     // {{{ constructor
 
-    public function __construct($_uid, $_asso, $_liste, $_domain, $_desc, $_advertise,
+    public function __construct(User &$_user, $_asso, $_liste, $_domain, $_desc, $_advertise,
                                 $_modlevel, $_inslevel, $_owners, $_members, $_stamp=0)
     {
-        parent::__construct($_uid, false, 'liste', $_stamp);
+        parent::__construct($_user, false, 'liste', $_stamp);
 
         $this->asso      = $_asso;
         $this->liste     = $_liste;
@@ -101,7 +101,7 @@ class ListeReq extends Validate
 
     protected function _mail_subj()
     {
-        return "[Polytechnique.org/LISTES] Demande de la liste {$this->liste}";
+        return "[Polytechnique.org/LISTES] Demande de la liste {$this->liste}@{$this->domain}";
     }
 
     // }}}
@@ -110,9 +110,9 @@ class ListeReq extends Validate
     protected function _mail_body($isok)
     {
         if ($isok) {
-            return "  La liste de diffusion {$this->liste} que tu avais demandée vient d'être créée.";
+            return "  Suite à ta demande de création de liste de diffusion, nous avons créé l'adresse {$this->liste}@{$this->domain}, qui est maintenant à ta disposition.";
         } else {
-            return "  La demande que tu avais faite pour la liste de diffusion {$this->liste} a été refusée.";
+            return "  La demande que tu avais faite pour la liste de diffusion {$this->liste}@{$this->domain} a été refusée.";
         }
     }
 
@@ -125,32 +125,28 @@ class ListeReq extends Validate
 
         if ($this->asso == "alias") {
             $new = $this->liste . '@' . $this->domain;
-            XDB::query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new);
+            XDB::query('INSERT INTO virtual (alias, type) VALUES({?}, "user")', $new);
             foreach ($this->members as $member) {
-                $res = XDB::query(
-                        "SELECT  a.alias, b.alias
-                           FROM  x4dat.aliases AS a
-                      LEFT JOIN  x4dat.aliases AS b ON (a.id=b.id AND b.type = 'a_vie')
-                          WHERE  a.alias={?} AND a.type!='homonyme'", $member);
-                list($alias, $blias) = $res->fetchOneRow();
-                $alias = empty($blias) ? $alias : $blias;
-                XDB::query(
-                    "INSERT INTO  x4dat.virtual_redirect (vid,redirect)
-                          SELECT  vid, {?}
-                            FROM  x4dat.virtual
-                           WHERE  alias={?}", $alias . "@" . $globals->mail->domain, $new);
+                $user = User::get($member);
+                if ($user != null) {
+                    XDB::query(
+                        "INSERT INTO  virtual_redirect (vid, redirect)
+                              SELECT  vid, {?}
+                                FROM  virtual
+                               WHERE  alias = {?}", $user->forlifeEmail(), $new);
+                }
             }
             return 1;
         }
 
-        $list = new MMList(S::v('uid'), S::v('password'), $this->domain);
+        $list = new MMList(S::user()->id(), S::v('password'), $this->domain);
         $ret = $list->create_list($this->liste, utf8_decode($this->desc), $this->advertise,
                                   $this->modlevel, $this->inslevel,
                                   $this->owners, $this->members);
         $liste = strtolower($this->liste);
         if ($ret && !$this->asso) {
             foreach(Array($liste, $liste . "-owner", $liste . "-admin", $liste . "-bounces", $liste . "-unsubscribe") as $l) {
-                XDB::execute("INSERT INTO aliases (alias,type) VALUES({?}, 'liste')", $l);
+                XDB::execute("INSERT INTO aliases (alias, type) VALUES({?}, 'liste')", $l);
             }
         } elseif ($ret) {
             foreach (Array('', 'owner', 'admin', 'bounces', 'unsubscribe') as $app) {
@@ -159,9 +155,9 @@ class ListeReq extends Validate
                     $app  = '-' . $app;
                 }
                 $red = $this->domain . '_' . $liste;
-                XDB::execute('INSERT INTO x4dat.virtual (alias,type)
-                                        VALUES({?},{?})', $liste . $app . '@' . $this->domain, 'list');
-                XDB::execute('INSERT INTO x4dat.virtual_redirect (vid,redirect)
+                XDB::execute('INSERT INTO virtual (alias, type)
+                                        VALUES({?}, {?})', $liste . $app . '@' . $this->domain, 'list');
+                XDB::execute('INSERT INTO virtual_redirect (vid, redirect)
                                         VALUES ({?}, {?})', XDB::insertId(),
                                        $red . $mdir . '@listes.polytechnique.org');
                 $list->mass_subscribe($liste, join(' ', $this->members));