Adapts bin scripts to new mail chain.
[platal.git] / include / emails.inc.php
index 3af0096..ccd3890 100644 (file)
@@ -24,7 +24,7 @@ define('ERROR_INACTIVE_REDIRECTION', 2);
 define('ERROR_INVALID_EMAIL', 3);
 define('ERROR_LOOP_EMAIL', 4);
 
-function add_to_list_alias(User $user, $local_part, $domain)
+function add_to_list_alias(User $user, $local_part, $domain, $type = 'user')
 {
     Platal::assert($user !== null);
 
@@ -35,7 +35,7 @@ function add_to_list_alias(User $user, $local_part, $domain)
                  $local_part, $user->forlifeEmail(), $type, $domain);
 }
 
-function delete_from_list_alias(User $user, $local_part, $domain)
+function delete_from_list_alias(User $user, $local_part, $domain, $type = 'user')
 {
     Platal::assert($user !== null);
 
@@ -47,6 +47,17 @@ function delete_from_list_alias(User $user, $local_part, $domain)
                  $local_part, $domain, $user->forlifeEmail(), $type);
 }
 
+function update_list_alias(User $user, $former_email, $local_part, $domain, $type = 'user')
+{
+    Platal::assert($user !== null);
+
+    XDB::execute('UPDATE  email_virtual         AS v
+              INNER JOIN  email_virtual_domains AS d ON (v.domain = d.id)
+                     SET  v.redirect = {?}
+                   WHERE  v.redirect = {?} AND d.name = {?} AND v.email = {?} AND v.type = {?}',
+                 $user->forlifeEmail(), $former_email, $domain, $local_part, $type);
+}
+
 function list_alias_members($local_part, $domain)
 {
     $emails = XDB::fetchColumn('SELECT  DISTINCT(redirect)
@@ -147,7 +158,7 @@ function mark_broken_email($email, $admin = false)
                            WHERE  redirect = {?}', $email);
         } elseif ($admin) {
             XDB::execute('UPDATE  email_redirect_account
-                             SET  last = CURDATE(), broken_level = IF(broken_level > 1, 3, 2)
+                             SET  last = CURDATE(), broken_level = broken_level + 1
                            WHERE  redirect = {?} AND DATE_ADD(last, INTERVAL 14 DAY) < CURDATE()',
                          $email);
         } else {
@@ -167,7 +178,7 @@ function fix_bestalias(User $user)
 {
     $count = XDB::fetchOneCell('SELECT  COUNT(*)
                                   FROM  email_source_account
-                                 WHERE  uid = {?} AND FIND_IN_SET(\'bestalias\', flags)',
+                                 WHERE  uid = {?} AND FIND_IN_SET(\'bestalias\', flags) AND expire IS NULL',
                                $user->id());
 
     if ($count == 1) {
@@ -185,7 +196,7 @@ function fix_bestalias(User $user)
     // related to a usage name and contains a '.'.
     XDB::execute("UPDATE  email_source_account
                      SET  flags = CONCAT_WS(',', IF(flags = '', NULL, flags), 'bestalias')
-                   WHERE  uid = {?}
+                   WHERE  uid = {?} AND expire IS NULL
                 ORDER BY  NOT FIND_IN_SET('usage', flags), email LIKE '%.%', LENGTH(email)
                    LIMIT  1",
                  $user->id());