CRM-12550 avoid extraneous log_civicrm_email entries
authoreileen <eileen@fuzion.co.nz>
Tue, 7 May 2013 21:43:20 +0000 (09:43 +1200)
committereileen <eileen@fuzion.co.nz>
Tue, 7 May 2013 21:43:20 +0000 (09:43 +1200)
CRM/Core/BAO/Email.php

index 3643680896f8aeca47bf90cb4f15fcb747d4d407..d3cb38f4b78771b199f05b938acaac335477956d 100644 (file)
@@ -75,14 +75,21 @@ class CRM_Core_BAO_Email extends CRM_Core_DAO_Email {
     $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
     $email->email = $strtolower($email->email);
 
-    // since we're setting bulkmail for 1 of this contact's emails, first reset all their emails to is_bulkmail false
-    // (only 1 email address can have is_bulkmail = true)
+    /*
+    * since we're setting bulkmail for 1 of this contact's emails, first reset all their other emails to is_bulkmail false
+    *  We shouldn't not set the current email to false even though we
+    *  are about to reset it to avoid contaminating the changelog if logging is enabled
+    * (only 1 email address can have is_bulkmail = true)
+    */
     if ($email->is_bulkmail != 'null' && $params['contact_id'] && !self::isMultipleBulkMail()) {
       $sql = "
 UPDATE civicrm_email
 SET    is_bulkmail = 0
 WHERE  contact_id = {$params['contact_id']}
 ";
+    if($hook == 'edit'){
+      $sql .= " AND id <> {$params['id']}";
+    }
       CRM_Core_DAO::executeQuery($sql);
     }