Deletes lost addresses, medals and phones.
[platal.git] / modules / email.php
index d70da2c..d412b2a 100644 (file)
@@ -82,19 +82,18 @@ class EmailModule extends PLModule
         $aliases = XDB::iterator("SELECT  CONCAT(s.email, '@', d.name) AS email, (s.type = 'forlife') AS forlife,
                                           (s.email REGEXP '\\\\.[0-9]{2}$') AS hundred_year,
                                           FIND_IN_SET('bestalias', s.flags) AS bestalias, s.expire,
-                                          (d.name = {?}) AS alias
+                                          (s.type = 'alias_aux') AS alias
                                     FROM  email_source_account  AS s
                               INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
                                    WHERE  s.uid = {?}
                                 ORDER BY  !alias, s.email",
-                                 $globals->mail->alias_dom, $user->id());
+                                 $user->id());
         $page->assign('aliases', $aliases);
 
-        $alias = XDB::fetchOneCell('SELECT  COUNT(s.email)
-                                      FROM  email_source_account  AS s
-                                INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
-                                     WHERE  s.uid = {?} AND d.name = {?}',
-                                   $user->id(), $globals->mail->alias_dom);
+        $alias = XDB::fetchOneCell('SELECT  COUNT(email)
+                                      FROM  email_source_account
+                                     WHERE  uid = {?} AND type = \'alias_aux\'',
+                                   $user->id());
         $page->assign('alias', $alias);
 
 
@@ -104,6 +103,13 @@ class EmailModule extends PLModule
         // Display active redirections.
         $redirect = new Redirect($user);
         $page->assign('mails', $redirect->active_emails());
+
+        // User's mail domains.
+        $mail_domains = array($user->alternateEmailDomain());
+        $mail_domains[] = User::$sub_mail_domains['all'] . $globals->mail->domain;
+        $mail_domains[] = User::$sub_mail_domains['all'] . $globals->mail->domain2;
+        $page->assign('main_email_domain', $user->mainEmailDomain());
+        $page->assign('mail_domains', $mail_domains);
     }
 
     function handler_alias($page, $action = null, $value = null)
@@ -120,22 +126,20 @@ class EmailModule extends PLModule
         if ($action == 'delete') {
             S::assert_xsrf_token();
 
-            XDB::execute('DELETE  s
-                            FROM  email_source_account  AS s
-                      INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
-                           WHERE  s.uid = {?} AND d.name = {?}',
-                         $user->id(), $globals->mail->alias_dom);
+            XDB::execute('DELETE FROM  email_source_account
+                                WHERE  uid = {?} AND type = \'alias_aux\'',
+                         $user->id());
 
             require_once 'emails.inc.php';
             fix_bestalias($user);
         }
 
-        // Fetch existing @alias_dom aliases.
+        // Fetch existing auxiliary aliases.
         list($alias, $old_alias) = XDB::fetchOneRow('SELECT  CONCAT(s.email, \'@\', d.name), s.email
                                                        FROM  email_source_account  AS s
                                                  INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
-                                                      WHERE  s.uid = {?} AND d.name = {?}',
-                                                    $user->id(), $globals->mail->alias_dom);
+                                                      WHERE  s.uid = {?} AND s.type = \'alias_aux\'',
+                                                    $user->id());
         $visibility = $user->hasProfile() && ($user->profile(true)->alias_pub == 'public');
         $page->assign('current', $alias);
         $page->assign('user', $user);
@@ -164,11 +168,10 @@ class EmailModule extends PLModule
                 return;
             } else {
                 // Checks if the alias has already been given.
-                $res = XDB::query('SELECT  COUNT(s.email)
-                                     FROM  email_source_account  AS s
-                               INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
-                                    WHERE  s.email = {?} AND d.name = {?}',
-                                  $new_alias, $globals->mail->alias_dom);
+                $res = XDB::query('SELECT  COUNT(email)
+                                     FROM  email_source_account
+                                    WHERE  email = {?} AND type = \'alias_aux\'',
+                                  $new_alias);
                 if ($res->fetchOneCell() > 0) {
                     $page->trigError("L'alias $new_alias a déja été attribué. Tu ne peux donc pas l'obtenir.");
                     return;
@@ -284,8 +287,8 @@ class EmailModule extends PLModule
                          INNER JOIN  email_virtual_domains AS m ON (s.domain = m.id)
                          INNER JOIN  email_virtual_domains AS d ON (m.id = d.aliasing)
                               WHERE  s.uid = {?}
-                           ORDER BY  NOT (m.name = {?}), s.email, d.name',
-                            $user->id(), $globals->mail->alias_dom);
+                           ORDER BY  NOT(s.type = \'alias_aux\'), s.email, d.name',
+                            $user->id());
         $page->assign('alias', $alias->fetchAllAssoc());
 
         $page->assign('emails', $redirect->emails);
@@ -298,7 +301,7 @@ class EmailModule extends PLModule
         fill_email_combobox($page);
     }
 
-    function handler_antispam($page, $filter_status = null)
+    function handler_antispam($page, $filter_status = null, $redirection = null)
     {
         require_once 'emails.inc.php';
         $wp = new PlWikiPage('Xorg.Antispam');
@@ -308,10 +311,17 @@ class EmailModule extends PLModule
 
         $user = S::user();
         $bogo = new Bogo($user);
-        if (isset($filter_status)) {
-            $bogo->change($filter_status + 0);
+        if (!is_null($filter_status)) {
+            if (is_null($redirection)) {
+                $bogo->changeAll($filter_status);
+            } else {
+                $bogo->change($redirection, $filter_status);
+            }
         }
-        $page->assign('filter', $bogo->level());
+        $page->assign('filter', $bogo->state);
+        $page->assign('single_state', $bogo->single_state);
+        $page->assign('single_redirection', $bogo->single_redirection);
+        $page->assign('redirections', $bogo->redirections);
     }
 
     function handler_submit($page)
@@ -640,11 +650,8 @@ class EmailModule extends PLModule
             S::assert_xsrf_token();
 
             $email = Post::t('email');
-            list(, $domain) = explode('@', $email);
-            $domain = strtolower($domain);
 
-            if ($domain == $globals->mail->alias_dom || $domain == $globals->mail->alias_dom2
-                || $domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
+            if (!User::isForeignEmailAddress($email)) {
                 $page->assign('neuneu', true);
             } else {
                 $user = mark_broken_email($email);
@@ -819,7 +826,7 @@ class EmailModule extends PLModule
                     if ($user = mark_broken_email($email, true)) {
                         if ($user['nb_mails'] > 0) {
                             $mail = new PlMailer('emails/broken.mail.tpl');
-                            $mail->addTo('"' . $user['full_name'] . '" <' . $user['alias'] . '@' . Platal::globals()->mail->domain . '>');
+                            $mail->addTo($user);
                             $mail->assign('user', $user);
                             $mail->assign('email', $email);
                             $mail->send();