CRM-21214 - Fix address sharing 1
authorDaniël <daniel@qaleido.nl>
Fri, 22 Sep 2017 11:19:52 +0000 (13:19 +0200)
committerGitHub <noreply@github.com>
Fri, 22 Sep 2017 11:19:52 +0000 (13:19 +0200)
CRM/Contact/BAO/Contact/Utils.php

index 024ef85042031ecbe8f188d1845f2a7e338461d9..2e070cd1b4fff3640601fb6277d9c524bb81a48f 100644 (file)
@@ -832,6 +832,14 @@ INNER JOIN civicrm_contact contact_target ON ( contact_target.id = act.contact_i
       $masterAddress->id = CRM_Utils_Array::value('master_id', $values);
       $masterAddress->find(TRUE);
 
+      //if address master address is shared, use its master (prevent chaining)
+      if ($masterAddress->master_id > 0) {
+        $values['master_id'] = $masterAddress->master_id;
+        $masterAddress = new CRM_Core_BAO_Address();
+        $masterAddress->id = CRM_Utils_Array::value('master_id', $values);
+        $masterAddress->find(TRUE);
+      }
+
       // 4. modify submitted params and update it with shared contact address
       // make sure you preserve specific form values like location type, is_primary_ is_billing, master_id
       // CRM-10336: Also empty any fields from the existing address block if they don't exist in master (otherwise they will persist)