Deprecate getAvailableFields on parser class
authorEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 23 Aug 2022 03:49:20 +0000 (15:49 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 23 Aug 2022 21:39:57 +0000 (09:39 +1200)
It really is a form layer function, called from one place on the forms
and one on the unit tests

CRM/Import/Forms.php
CRM/Import/Parser.php

index 0efc526e67c01174cf9b1b64fccfceaf46659eaf..d9112f233ea0cb2331c67286e4f2aa7721b33035 100644 (file)
@@ -579,7 +579,26 @@ class CRM_Import_Forms extends CRM_Core_Form {
    * @throws \API_Exception
    */
   protected function getAvailableFields(): array {
-    return $this->getParser()->getAvailableFields();
+    $return = [];
+    foreach ($this->getFields() as $name => $field) {
+      if ($name === 'id' && $this->isSkipDuplicates()) {
+        // Duplicates are being skipped so id matching is not available.
+        continue;
+      }
+      $return[$name] = $field['html']['label'] ?? $field['title'];
+    }
+    return $return;
+  }
+
+  /**
+   * Get the fields available for import selection.
+   *
+   * @return array
+   *   e.g ['first_name' => 'First Name', 'last_name' => 'Last Name'....
+   *
+   */
+  protected function getFields(): array {
+    return $this->getParser()->getFieldsMetadata();
   }
 
   /**
index 0c867dc8044021fdcce1b71cf1e17d344f2938ee..02a7ce57c16baabcd5e2cd02f3ac91646a505e55 100644 (file)
@@ -319,6 +319,8 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * Once we have cleaned up the way the mapper is handled
    * we can ditch all the existing _construct parameters in favour
    * of just the userJobID - there are current open PRs towards this end.
+   *
+   * @deprecated
    */
   public function getAvailableFields(): array {
     $this->setFieldMetadata();
@@ -1733,7 +1735,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *
    * @return array
    */
-  protected function getFieldsMetadata() : array {
+  public function getFieldsMetadata() : array {
     if (empty($this->importableFieldsMetadata)) {
       unset($this->userJob);
       $this->setFieldMetadata();