Fixes bestalias update when two local_part are identical (Closes #1517).
authorStéphane Jacob <sj@m4x.org>
Thu, 7 Jul 2011 09:57:01 +0000 (11:57 +0200)
committerStéphane Jacob <sj@m4x.org>
Thu, 7 Jul 2011 09:57:01 +0000 (11:57 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
ChangeLog
modules/email.php

index 04fe73a..fda60c4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,11 @@
 ================================================================================
 VERSION 1.1.3                                                         XX XX XXXX
 
+Bug/Wish:
+
+    * Email :
+        - #1517: Fixes bestalias update when two local_part are identical  -JAC
+
 ================================================================================
 VERSION 1.1.2                                                         28 06 2011
 
index 7648515..73a22c7 100644 (file)
@@ -67,9 +67,12 @@ class EmailModule extends PLModule
                            WHERE  uid = {?}", $user->id());
             // Then gives the bestalias flag to the given email.
             list($email, $domain) = explode('@', $email);
-            XDB::execute("UPDATE  email_source_account
+            XDB::execute("UPDATE  email_source_account  AS s
+                      INNER JOIN  email_virtual_domains AS m ON (m.id = s.domain)
+                      INNER JOIN  email_virtual_domains AS d ON (d.aliasing = m.id)
                              SET  flags = CONCAT_WS(',', IF(flags = '', NULL, flags), 'bestalias')
-                           WHERE  uid = {?} AND email = {?}", $user->id(), $email);
+                           WHERE  s.uid = {?} AND s.email = {?} AND d.name = {?}",
+                         $user->id(), $email, $domain);
             XDB::execute('UPDATE  accounts              AS a
                       INNER JOIN  email_virtual_domains AS d ON (d.name = {?})
                       INNER JOIN  email_virtual_domains AS m ON (d.aliasing = m.id)