Adapts Xnet groups lists to new mail chain.
authorStéphane Jacob <sj@m4x.org>
Fri, 25 Feb 2011 15:47:29 +0000 (16:47 +0100)
committerStéphane Jacob <sj@m4x.org>
Sun, 27 Feb 2011 22:19:02 +0000 (23:19 +0100)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/xnet.php
modules/xnetgrp.php

index df5d753..be6abfa 100644 (file)
@@ -81,10 +81,13 @@ class XnetModule extends PLModule
                 $page->trigSuccess('membres supprimés');
 
                 if ($domain) {
-                    XDB::query('DELETE FROM  virtual_domains WHERE domain={?}', $domain);
-                    XDB::query('DELETE FROM  virtual, virtual_redirect
-                                                USING  virtual INNER JOIN virtual_redirect USING (vid)
-                                                WHERE  alias LIKE {?}', '%@'.$domain);
+                    XDB::execute('DELETE  v
+                                    FROM  email_virtual         AS v
+                              INNER JOIN  email_virtual_domains AS d ON (v.domain = d.id)
+                                   WHERE  d.name = {?}',
+                                 $domain);
+                    XDB::execute('DELETE FROM  email_virtual_domains
+                                        WHERE  name = {?}', $domain);
                     $page->trigSuccess('suppression des alias mails');
 
                     $mmlist = new MMList(S::v('uid'), S::v('password'), $domain);
index ca6361c..abadfaf 100644 (file)
@@ -208,8 +208,13 @@ class XnetGrpModule extends PLModule
                       Post::v('unsub_url'), $flags, Post::t('welcome_msg'),
                       $globals->asso('id'));
                 if (Post::v('mail_domain')) {
-                    XDB::execute('INSERT IGNORE INTO virtual_domains (domain) VALUES({?})',
-                                           Post::v('mail_domain'));
+                    XDB::execute('INSERT IGNORE INTO  email_virtual_domains (name)
+                                              VALUES  ({?})',
+                                 Post::t('mail_domain'));
+                    XDB::execute('UPDATE  email_virtual_domains
+                                     SET  aliasing = id
+                                   WHERE  name = {?}',
+                                 Post::t('mail_domain'));
                 }
             } else {
                 XDB::execute(
@@ -793,11 +798,11 @@ class XnetGrpModule extends PLModule
             }
         }
 
-        XDB::execute("DELETE FROM  virtual_redirect
-                            USING  virtual_redirect
-                       INNER JOIN  virtual USING(vid)
-                            WHERE  redirect={?} AND alias LIKE {?}",
-                       $user->forlifeEmail(), '%@'.$domain);
+        XDB::execute('DELETE  v
+                        FROM  email_virtual         AS v
+                  INNER JOIN  email_virtual_domains AS d ON (v.domain = d.id)
+                       WHERE  v.redirect = {?} AND d.name = {?}',
+                     $user->forlifeEmail(), $domain);
         return !$warning;
     }
 
@@ -974,26 +979,18 @@ class XnetGrpModule extends PLModule
 
             // Change subscriptioin to aliases
             foreach (Env::v('ml3', array()) as $ml => $state) {
+                require_once 'emails.inc.php';
                 $ask = !empty($_REQUEST['ml4'][$ml]);
                 if($state == $ask) {
                     if ($state && $email_changed) {
-                        XDB::query("UPDATE  virtual_redirect AS vr, virtual AS v
-                                       SET  vr.redirect = {?}
-                                     WHERE  vr.vid = v.vid AND v.alias = {?} AND vr.redirect = {?}",
-                                     $user->forlifeEmail(), $ml, $from_email);
+                        update_list_alias($user, $from_email, $ml, $globals->asso('mail_domain'));
                         $page->trigSuccess("L'abonnement de {$user->fullName()} à $ml a été mis à jour.");
                     }
                 } else if($ask) {
-                    XDB::query("INSERT INTO  virtual_redirect (vid,redirect)
-                                     SELECT  vid,{?} FROM virtual WHERE alias={?}",
-                               $user->forlifeEmail(), $ml);
+                    add_to_list_alias($user, $ml, $globals->asso('mail_domain'));
                     $page->trigSuccess("{$user->fullName()} a été abonné à $ml.");
                 } else {
-                    XDB::query("DELETE FROM  virtual_redirect
-                                      USING  virtual_redirect
-                                 INNER JOIN  virtual USING(vid)
-                                      WHERE  redirect={?} AND alias={?}",
-                               $from_email, $ml);
+                    delete_from_list_alias($user, $ml, $globals->asso('mail_domain'));
                     $page->trigSuccess("{$user->fullName()} a été désabonné de $ml.");
                 }
             }