[Ref] Extract getContactFields
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 23 Aug 2022 21:16:19 +0000 (09:16 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 23 Aug 2022 21:16:19 +0000 (09:16 +1200)
CRM/Contribute/Import/Parser/Contribution.php
CRM/Import/Parser.php

index 8382a6f8694522674c91bd11b7ebc1ddb46ad5b4..fdb0307eb4e2d110f512028cbb7e78f37c46f9ca 100644 (file)
@@ -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);
index 0c867dc8044021fdcce1b71cf1e17d344f2938ee..d9ca45422a7133e84452a790db55cc370d608a32 100644 (file)
@@ -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.
    *