Avoid processing location tables when moveContactBelongings() is called without a...
authorAidan Saunders <aidan.saunders@gmail.com>
Mon, 1 Dec 2014 18:07:01 +0000 (18:07 +0000)
committerAidan Saunders <aidan.saunders@gmail.com>
Mon, 1 Dec 2014 18:07:01 +0000 (18:07 +0000)
these are handled separately.  Issue CRM-15658

CRM/Dedupe/Merger.php

index 7057ad3555aa76139b5a3a8a63e594c3b54178e7..c1a0226b913fc3df7d4e3a1177b0bb4a94b31821 100644 (file)
@@ -242,6 +242,20 @@ WHERE
     return $eidRefs;
   }
 
+  /**
+   * Return tables using locations
+   */
+  static function locTables() {
+    static $locTables;
+    if (!$locTables) {
+      $locTables = array( 'civicrm_email', 'civicrm_address', 'civicrm_phone' );
+
+      // Allow hook_civicrm_merge() to adjust $locTables
+      CRM_Utils_Hook::merge('locTables', $locTables);
+    }
+    return $locTables;
+  }
+
   /**
    * We treat multi-valued custom sets as "related tables" similar to activities, contributions, etc.
    * @param string $request 'relTables' or 'cidRefs'
@@ -416,8 +430,9 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
     }
     else {
       // if there aren't any specific tables, don't affect the ones handled by relTables()
+      // also don't affect tables in locTables() CRM-15658
       $relTables = self::relTables();
-      $handled = array();
+      $handled = self::locTables();
       foreach ($relTables as $params) {
         $handled = array_merge($handled, $params['tables']);
       }