From: Eileen McNaughton Date: Tue, 23 Aug 2022 21:16:19 +0000 (+1200) Subject: [Ref] Extract getContactFields X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=8f8ba917a96a693a724edd57a5b2568e1f252475;p=civicrm-core.git [Ref] Extract getContactFields --- diff --git a/CRM/Contribute/Import/Parser/Contribution.php b/CRM/Contribute/Import/Parser/Contribution.php index 8382a6f869..fdb0307eb4 100644 --- a/CRM/Contribute/Import/Parser/Contribution.php +++ b/CRM/Contribute/Import/Parser/Contribution.php @@ -264,35 +264,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser { $note = CRM_Core_DAO_Note::import(); $tmpFields = CRM_Contribute_DAO_Contribution::import(); unset($tmpFields['option_value']); - $contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL); - - // Using new Dedupe rule. - $ruleParams = [ - 'contact_type' => $contactType, - 'used' => 'Unsupervised', - ]; - $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams); - $tmpContactField = []; - if (is_array($fieldsArray)) { - foreach ($fieldsArray as $value) { - //skip if there is no dupe rule - if ($value === 'none') { - continue; - } - $customFieldId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', - $value, - 'id', - 'column_name' - ); - $value = $customFieldId ? 'custom_' . $customFieldId : $value; - $tmpContactField[trim($value)] = $contactFields[trim($value)]; - $title = $tmpContactField[trim($value)]['title'] . ' ' . ts('(match to contact)'); - $tmpContactField[trim($value)]['title'] = $title; - } - } - - $tmpContactField['external_identifier'] = $contactFields['external_identifier']; - $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)'); + $tmpContactField = $this->getContactFields($contactType); $tmpFields['contribution_contact_id']['title'] = $tmpFields['contribution_contact_id']['html']['label'] = $tmpFields['contribution_contact_id']['title'] . ' ' . ts('(match to contact)'); $fields = array_merge($fields, $tmpContactField); $fields = array_merge($fields, $tmpFields); diff --git a/CRM/Import/Parser.php b/CRM/Import/Parser.php index 0c867dc804..d9ca45422a 100644 --- a/CRM/Import/Parser.php +++ b/CRM/Import/Parser.php @@ -305,6 +305,45 @@ abstract class CRM_Import_Parser implements UserJobInterface { $this->importableFieldsMetadata = $importableFieldsMetadata; } + /** + * @param string $contactType + * + * @return array[] + * @throws \CRM_Core_Exception + */ + protected function getContactFields(string $contactType): array { + $contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL); + + // Using new Dedupe rule. + $ruleParams = [ + 'contact_type' => $contactType, + 'used' => 'Unsupervised', + ]; + $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams); + $tmpContactField = []; + if (is_array($fieldsArray)) { + foreach ($fieldsArray as $value) { + //skip if there is no dupe rule + if ($value === 'none') { + continue; + } + $customFieldId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', + $value, + 'id', + 'column_name' + ); + $value = trim($customFieldId ? 'custom_' . $customFieldId : $value); + $tmpContactField[$value] = $contactFields[$value]; + $title = $tmpContactField[$value]['title'] . ' ' . ts('(match to contact)'); + $tmpContactField[$value]['title'] = $title; + } + } + + $tmpContactField['external_identifier'] = $contactFields['external_identifier']; + $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)'); + return $tmpContactField; + } + /** * Gets the fields available for importing in a key-name, title format. *