From d509ee879957ccc213aa9792414647b0db7462db Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 5 Jul 2019 18:42:40 -0400 Subject: [PATCH] Further cleanup & extraction in getMappingFieds --- CRM/Core/BAO/Mapping.php | 88 +++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 50 deletions(-) diff --git a/CRM/Core/BAO/Mapping.php b/CRM/Core/BAO/Mapping.php index d48840b40b..f3b4d79bcf 100644 --- a/CRM/Core/BAO/Mapping.php +++ b/CRM/Core/BAO/Mapping.php @@ -347,19 +347,10 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { $fields = self::getBasicFields($mappingType); - // add component fields - $compArray = []; - - //we need to unset groups, tags, notes for component export + // Unset groups, tags, notes for component export if ($exportMode != CRM_Export_Form_Select::CONTACT_EXPORT) { - foreach ([ - 'groups', - 'tags', - 'notes', - ] as $value) { - unset($fields['Individual'][$value]); - unset($fields['Household'][$value]); - unset($fields['Organization'][$value]); + foreach (array_keys($fields) as $type) { + CRM_Utils_Array::remove($fields[$type], 'groups', 'tags', 'notes'); } } @@ -385,6 +376,9 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { } } + // add component fields + $compArray = []; + if (($mappingType == 'Search Builder') || ($exportMode == CRM_Export_Form_Select::CONTRIBUTE_EXPORT)) { if (CRM_Core_Permission::access('CiviContribute')) { $fields['Contribution'] = CRM_Core_DAO::getExportableFieldsWithPseudoConstants('CRM_Contribute_BAO_Contribution'); @@ -453,44 +447,6 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { $compArray['Activity'] = ts('Activity'); } - //Contact Sub Type For export - $contactSubTypes = []; - $subTypes = CRM_Contact_BAO_ContactType::subTypeInfo(); - - foreach ($subTypes as $subType => $val) { - //adding subtype specific relationships CRM-5256 - $csRelationships = []; - - if ($mappingType == 'Export') { - $subTypeRelationshipTypes - = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, $val['parent'], - FALSE, 'label', TRUE, $subType); - - foreach ($subTypeRelationshipTypes as $key => $var) { - if (!array_key_exists($key, $fields[$val['parent']])) { - list($type) = explode('_', $key); - - $csRelationships[$key]['title'] = $var; - $csRelationships[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/'; - $csRelationships[$key]['export'] = TRUE; - $csRelationships[$key]['relationship_type_id'] = $type; - $csRelationships[$key]['related'] = TRUE; - $csRelationships[$key]['hasRelationType'] = 1; - } - } - } - - $fields[$subType] = $fields[$val['parent']] + $csRelationships; - - //custom fields for sub type - $subTypeFields = CRM_Core_BAO_CustomField::getFieldsForImport($subType); - $fields[$subType] += $subTypeFields; - - if (!empty($subTypeFields) || !empty($csRelationships)) { - $contactSubTypes[$subType] = $val['label']; - } - } - foreach ($fields as $key => $value) { foreach ($value as $key1 => $value1) { @@ -969,6 +925,38 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping { $fields['Individual']['current_employer_id']['title'] = ts('Current Employer ID'); } + // Contact Sub Type For export + $subTypes = CRM_Contact_BAO_ContactType::subTypeInfo(); + foreach ($subTypes as $subType => $info) { + //adding subtype specific relationships CRM-5256 + $csRelationships = []; + + if ($mappingType == 'Export') { + $subTypeRelationshipTypes + = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, $info['parent'], + FALSE, 'label', TRUE, $subType); + + foreach ($subTypeRelationshipTypes as $key => $var) { + if (!array_key_exists($key, $fields[$info['parent']])) { + list($type) = explode('_', $key); + + $csRelationships[$key]['title'] = $var; + $csRelationships[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/'; + $csRelationships[$key]['export'] = TRUE; + $csRelationships[$key]['relationship_type_id'] = $type; + $csRelationships[$key]['related'] = TRUE; + $csRelationships[$key]['hasRelationType'] = 1; + } + } + } + + $fields[$subType] = $fields[$info['parent']] + $csRelationships; + + //custom fields for sub type + $subTypeFields = CRM_Core_BAO_CustomField::getFieldsForImport($subType); + $fields[$subType] += $subTypeFields; + } + return $fields; } -- 2.25.1