Remove last usage of _fields
authorEileen McNaughton <emcnaughton@wikimedia.org>
Mon, 15 Aug 2022 22:36:56 +0000 (10:36 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 16 Aug 2022 04:31:48 +0000 (16:31 +1200)
CRM/Import/Parser.php

index f862d8715b694de4114c5e0a402c4b09f8e2d60c..07134ad07a0dca7bc8448df313caf21c779e0c09 100644 (file)
@@ -496,11 +496,9 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   public function getSelectTypes() {
     $values = [];
     // This is only called from the MapField form in isolation now,
-    // so we need to set the metadata.
-    $this->init();
-    foreach ($this->_fields as $name => $field) {
-      if (isset($field->_hasLocationType)) {
-        $values[$name] = $field->_hasLocationType;
+    foreach ($this->getFieldsMetadata() as $name => $field) {
+      if (isset($field['hasLocationType'])) {
+        $values[$name] = TRUE;
       }
     }
     return $values;
@@ -1801,6 +1799,19 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     $this->setFieldMetadata();
   }
 
+  /**
+   * Get metadata for all importable fields.
+   *
+   * @return array
+   */
+  protected function getFieldsMetadata() : array {
+    if (empty($this->importableFieldsMetadata)) {
+      unset($this->userJob);
+      $this->setFieldMetadata();
+    }
+    return $this->importableFieldsMetadata;
+  }
+
   /**
    * @param array $mappedField
    *   Field detail as would be saved in field_mapping table