From 3817addccdbf590e8250da23d7d917a90a6c0e8d Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Sat, 24 Sep 2022 19:41:18 +1200 Subject: [PATCH] Fix civiimport crash on unmapped fields --- CRM/Contribute/Import/Parser/Contribution.php | 4 ++-- .../CRM/Contribute/Import/Parser/ContributionTest.php | 1 + .../Contribute/Import/Parser/data/soft_credit_extended.csv | 6 +++--- tests/phpunit/CRMTraits/Import/ParserTrait.php | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/Import/Parser/Contribution.php b/CRM/Contribute/Import/Parser/Contribution.php index 03eabb63de..a4b8476844 100644 --- a/CRM/Contribute/Import/Parser/Contribution.php +++ b/CRM/Contribute/Import/Parser/Contribution.php @@ -208,7 +208,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser { public function getMappedRow(array $values): array { $params = []; foreach ($this->getFieldMappings() as $i => $mappedField) { - if ($mappedField['name'] === 'do_not_import' || !$mappedField['name']) { + if (empty($mappedField['name']) || $mappedField['name'] === 'do_not_import') { continue; } $fieldSpec = $this->getFieldMetadata($mappedField['name']); @@ -774,7 +774,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser { if (empty($this->importableFieldsMetadata)) { $this->setFieldMetadata(); } - if ($mappedField['name'] === '') { + if (empty($mappedField['name'])) { return ''; } $title = []; diff --git a/tests/phpunit/CRM/Contribute/Import/Parser/ContributionTest.php b/tests/phpunit/CRM/Contribute/Import/Parser/ContributionTest.php index d6ce4319d6..20bd1aaaf3 100644 --- a/tests/phpunit/CRM/Contribute/Import/Parser/ContributionTest.php +++ b/tests/phpunit/CRM/Contribute/Import/Parser/ContributionTest.php @@ -214,6 +214,7 @@ class CRM_Contribute_Import_Parser_ContributionTest extends CiviUnitTestCase { ['name' => 'soft_credit.contact.email_primary.email', 'entity_data' => ['soft_credit' => ['soft_credit_type_id' => 5]]], ['name' => 'soft_credit.contact.first_name', 'entity_data' => ['soft_credit' => ['soft_credit_type_id' => 5]]], ['name' => 'soft_credit.contact.last_name', 'entity_data' => ['soft_credit' => ['soft_credit_type_id' => 5]]], + [], ]; $submittedValues = [ 'skipColumnHeader' => TRUE, diff --git a/tests/phpunit/CRM/Contribute/Import/Parser/data/soft_credit_extended.csv b/tests/phpunit/CRM/Contribute/Import/Parser/data/soft_credit_extended.csv index a7bdb279ac..fa95767bc0 100644 --- a/tests/phpunit/CRM/Contribute/Import/Parser/data/soft_credit_extended.csv +++ b/tests/phpunit/CRM/Contribute/Import/Parser/data/soft_credit_extended.csv @@ -1,3 +1,3 @@ -Organization Name,Legal Name,Amount,Financial Type,Source,Received Date,External identifier,Soft credit email,Soft credit first name,Soft Credit last name -Big Firm,Big Firm inc.,800,,Import,2022-09-08,abc,jenny@example.org,Jenny,Hawthorn -Small Firm,Small Firm inc.,70,Donation,Import,2022-09-08,zyx,sarah@example.org,Sarah,Windsor +Organization Name,Legal Name,Amount,Financial Type,Source,Received Date,External identifier,Soft credit email,Soft credit first name,Soft Credit last name,Just some cruft +Big Firm,Big Firm inc.,800,,Import,2022-09-08,abc,jenny@example.org,Jenny,Hawthorn, +Small Firm,Small Firm inc.,70,Donation,Import,2022-09-08,zyx,sarah@example.org,Sarah,Windsor, diff --git a/tests/phpunit/CRMTraits/Import/ParserTrait.php b/tests/phpunit/CRMTraits/Import/ParserTrait.php index bc199e6e0f..338acd76b3 100644 --- a/tests/phpunit/CRMTraits/Import/ParserTrait.php +++ b/tests/phpunit/CRMTraits/Import/ParserTrait.php @@ -87,7 +87,7 @@ trait CRMTraits_Import_ParserTrait { protected function getMapperFromFieldMappings(array $mappings): array { $mapper = []; foreach ($mappings as $mapping) { - $fieldInput = [$mapping['name']]; + $fieldInput = [$mapping['name'] ?? '']; if (!empty($mapping['soft_credit_type_id'])) { $fieldInput[1] = $mapping['soft_credit_type_id']; } -- 2.25.1