From fb8d573810fea0530c0f61ec8aede2dc955ea7d7 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Fri, 10 Jun 2022 11:01:33 +1200 Subject: [PATCH] Fix unrelease regression - malformed MapField without skipColumnHeaders --- CRM/Import/DataSource/CSV.php | 8 +++--- CRM/Import/Form/Preview.php | 1 + CRM/Import/Forms.php | 1 + templates/CRM/Import/Form/MapTableCommon.tpl | 4 +-- templates/CRM/Member/Import/Form/MapField.tpl | 26 +------------------ 5 files changed, 9 insertions(+), 31 deletions(-) diff --git a/CRM/Import/DataSource/CSV.php b/CRM/Import/DataSource/CSV.php index 79e68a0d7f..f084d65c73 100644 --- a/CRM/Import/DataSource/CSV.php +++ b/CRM/Import/DataSource/CSV.php @@ -74,7 +74,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * @throws \CRM_Core_Exception */ public function initialize(): void { - $result = self::_CsvToTable( + $result = $this->csvToTable( $this->getSubmittedValue('uploadFile')['name'], $this->getSubmittedValue('skipColumnHeader'), $this->getSubmittedValue('fieldSeparator') ?? ',' @@ -83,7 +83,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { $this->updateUserJobMetadata('DataSource', [ 'table_name' => $result['import_table_name'], - 'column_headers' => $this->getSubmittedValue('skipColumnHeader') ? $result['column_headers'] : [], + 'column_headers' => $result['column_headers'], 'number_of_columns' => $result['number_of_columns'], ]); } @@ -102,7 +102,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { * name of the created table * @throws \CRM_Core_Exception */ - private static function _CsvToTable( + private function csvToTable( $file, $headers = FALSE, $fieldSeparator = ',' @@ -124,7 +124,7 @@ class CRM_Import_DataSource_CSV extends CRM_Import_DataSource { } $firstrow = fgetcsv($fd, 0, $fieldSeparator); - + $result['column_headers'] = array_fill(0, count($firstrow), ''); // create the column names from the CSV header or as col_0, col_1, etc. if ($headers) { //need to get original headers. diff --git a/CRM/Import/Form/Preview.php b/CRM/Import/Form/Preview.php index 24aa09977c..92959b8357 100644 --- a/CRM/Import/Form/Preview.php +++ b/CRM/Import/Form/Preview.php @@ -113,6 +113,7 @@ abstract class CRM_Import_Form_Preview extends CRM_Import_Forms { } $this->assign('savedMappingName', $mappingId ? $mapDAO->name : NULL); $this->assign('skipColumnHeader', $this->getSubmittedValue('skipColumnHeader')); + $this->assign('showColumnNames', $this->getSubmittedValue('skipColumnHeader')); // rowDisplayCount is deprecated - it used to be used with {section} but we have nearly gotten rid of it. $this->assign('rowDisplayCount', $this->getSubmittedValue('skipColumnHeader') ? 3 : 2); } diff --git a/CRM/Import/Forms.php b/CRM/Import/Forms.php index 0b37ea76b2..f07a203297 100644 --- a/CRM/Import/Forms.php +++ b/CRM/Import/Forms.php @@ -597,6 +597,7 @@ class CRM_Import_Forms extends CRM_Core_Form { $this->_columnNames = $this->getColumnHeaders(); $this->_dataValues = array_values($this->getDataRows([], 2)); $this->assign('columnNames', $this->getColumnHeaders()); + $this->assign('showColumnNames', $this->getSubmittedValue('skipColumnHeader')); $this->assign('highlightedFields', $this->getHighlightedFields()); $this->assign('columnCount', $this->_columnCount); $this->assign('dataValues', $this->_dataValues); diff --git a/templates/CRM/Import/Form/MapTableCommon.tpl b/templates/CRM/Import/Form/MapTableCommon.tpl index 83fa1fcc8e..8be853aa87 100644 --- a/templates/CRM/Import/Form/MapTableCommon.tpl +++ b/templates/CRM/Import/Form/MapTableCommon.tpl @@ -10,7 +10,7 @@ {* Header row - has column for column names if they have been supplied *} - {if $columnNames} + {if $showColumnNames} {ts}Column Names{/ts} {/if} {foreach from=$dataValues item=row key=index} @@ -23,7 +23,7 @@ {*Loop on columns parsed from the import data rows*} {foreach from=$mapper key=i item=mapperField} - {if array_key_exists($i, $columnNames)} + {if $showColumnNames} {$columnNames[$i]} {/if} {foreach from=$dataValues item=row key=index} diff --git a/templates/CRM/Member/Import/Form/MapField.tpl b/templates/CRM/Member/Import/Form/MapField.tpl index 287e40ba0d..8564c9b70f 100644 --- a/templates/CRM/Member/Import/Form/MapField.tpl +++ b/templates/CRM/Member/Import/Form/MapField.tpl @@ -7,28 +7,4 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -
-{* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *} -{include file="CRM/common/WizardHeader.tpl"} -
-

{ts}Review the values shown below from the first 2 rows of your import file and select the matching CiviCRM database fields from the drop-down lists in the right-hand column. Select '- do not import -' for any columns in the import file that you want ignored.{/ts}

-

{ts}If you think you may be importing additional data from the same data source, check 'Save this field mapping' at the bottom of the page before continuing. The saved mapping can then be easily reused the next time data is imported.{/ts}

-
-
{include file="CRM/common/formButtons.tpl" location="top"}
-{* Membership Import Wizard - Step 2 (map incoming data fields) *} -{* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller *} - - {* Table for mapping data to CRM fields *} - {include file="CRM/Import/Form/MapTableCommon.tpl" mapper=$form.mapper} - -
{include file="CRM/common/formButtons.tpl" location="bottom"}
-
- {$initHideBoxes|smarty:nodefaults} -{literal} - -{/literal} +{include file="CRM/Import/Form/MapField.tpl"} -- 2.25.1