CRM-16065 - Custom field set data not being saved if contact has more than one contac...
authoratif-shaikh <shaikh388@gmail.com>
Tue, 10 Mar 2015 07:16:34 +0000 (12:46 +0530)
committeratif-shaikh <shaikh388@gmail.com>
Tue, 10 Mar 2015 07:16:34 +0000 (12:46 +0530)
https://issues.civicrm.org/jira/browse/CRM-16065

CRM/Contact/BAO/ContactType.php
CRM/Core/BAO/CustomField.php

index 24b44f90930eb7188b8ef45cebb5727ea02c2d83..789e7baa5542a7562c39710d851cdf92d676516b 100644 (file)
@@ -933,7 +933,7 @@ WHERE ($subtypeClause)";
    *
    * @return void
    */
-  public function deleteCustomRowsForEntityID($customTable, $entityID) {
+  public static function deleteCustomRowsForEntityID($customTable, $entityID) {
     $customTable = CRM_Utils_Type::escape($customTable, 'String');
     $query = "DELETE FROM {$customTable} WHERE entity_id = %1";
     return CRM_Core_DAO::singleValueQuery($query, array(1 => array($entityID, 'Integer')));
index b869dc34e7cc1ada95eb50f7efcd54220715877a..9c090f30cc83e93359e94febf70ff73dac783a1a 100644 (file)
@@ -1583,16 +1583,13 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
     //subtype and basic type
     $customDataSubType = NULL;
     if (is_array($customFieldExtend)) {
-      $customFieldExtend = $customFieldExtend[0];
-    }
-
-    if (in_array($customFieldExtend,
-      CRM_Contact_BAO_ContactType::subTypes()
-    )) {
       // This is the case when getFieldsForImport() requires fields
       // of subtype and its parent.CRM-5143
-      $customDataSubType = $customFieldExtend;
-      $customFieldExtend = CRM_Contact_BAO_ContactType::getBasicType($customDataSubType);
+      // CRM-16065 - Custom field set data not being saved if contact has more than one contact sub type
+      $customDataSubType = array_intersect(CRM_Contact_BAO_ContactType::subTypes(), (array) $customFieldExtend);
+      if (!empty($customDataSubType) && is_array($customDataSubType)) {
+        $customFieldExtend = array_unique(array_values(CRM_Contact_BAO_ContactType::getBasicType($customDataSubType)));
+      }
     }
 
     $customFields = CRM_Core_BAO_CustomField::getFields($customFieldExtend,