Extra fix to headerPatterns so fields 'guess' better
authorEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 9 Jun 2022 03:32:11 +0000 (15:32 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 9 Jun 2022 04:21:01 +0000 (16:21 +1200)
CRM/Custom/Import/Parser/Api.php
CRM/Import/Parser.php
tests/phpunit/CRM/Custom/Import/Parser/ApiTest.php

index a8a002084062aaed38bbf5bfedd4e3aa3b9fa3bc..0df37ed2a255d84e7ab7abe1a225dbec93afa6ad 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 
 use Civi\Api4\CustomField;
-use Civi\Api4\CustomGroup;
 
 /**
  * Class CRM_Custom_Import_Parser_Api
@@ -82,8 +81,8 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
       $importableFields = $this->getGroupFieldsForImport($customGroupID);
       $this->importableFieldsMetadata = array_merge([
         'do_not_import' => ['title' => ts('- do not import -')],
-        'contact_id' => ['title' => ts('Contact ID'), 'name' => 'contact_id', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE],
-        'external_identifier' => ['title' => ts('External Identifier'), 'name' => 'external_identifier', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE],
+        'contact_id' => ['title' => ts('Contact ID'), 'name' => 'contact_id', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE, 'headerPattern' => '/contact?|id$/i'],
+        'external_identifier' => ['title' => ts('External Identifier'), 'name' => 'external_identifier', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE, 'headerPattern' => '/external\s?id/i'],
       ], $importableFields);
     }
   }
@@ -196,7 +195,7 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
       $importableFields[$key] = [
         'name' => $key,
         'title' => $values['label'] ?? NULL,
-        'headerPattern' => '/' . preg_quote($regexp, '/') . '/',
+        'headerPattern' => '/' . preg_quote($regexp, '/') . '/i',
         'import' => 1,
         'custom_field_id' => $values['id'],
         'options_per_line' => $values['options_per_line'],
index 099e0afd5d1df29441f17c6339ff613732e3f713..0e6419ef1b27d5a86d88c66c9518fe8244a1b128 100644 (file)
@@ -571,9 +571,9 @@ abstract class CRM_Import_Parser {
    */
   public function getHeaderPatterns(): array {
     $values = [];
-    foreach ($this->_fields as $name => $field) {
-      if (isset($field->_headerPattern)) {
-        $values[$name] = $field->_headerPattern;
+    foreach ($this->importableFieldsMetadata as $name => $field) {
+      if (isset($field['headerPattern'])) {
+        $values[$name] = $field['headerPattern'] ?: '//';
       }
     }
     return $values;
index 05d261b119f5a4adfe9a666cc34c0811cb0114c6..4816b197089cefbb1decd5d03481162bfb0d7092 100644 (file)
@@ -38,7 +38,6 @@ class CRM_Custom_Import_Parser_ApiTest extends CiviUnitTestCase {
     $this->assertEquals('ERROR', $row['_status']);
   }
 
-
   /**
    * Get the import's datasource form.
    *