From 3e88bb2731eddb39f02d0960c33b76264b51e54d Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 23 Aug 2022 15:39:25 +1200 Subject: [PATCH] [REF] Extract getDefaults --- CRM/Member/Import/Form/MapField.php | 66 ++++++++++++----------------- 1 file changed, 28 insertions(+), 38 deletions(-) diff --git a/CRM/Member/Import/Form/MapField.php b/CRM/Member/Import/Form/MapField.php index 8dbe912983..5c5d04e535 100644 --- a/CRM/Member/Import/Form/MapField.php +++ b/CRM/Member/Import/Form/MapField.php @@ -31,10 +31,6 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField { //-------- end of saved mapping stuff --------- - $defaults = []; - $columnHeaders = $this->getColumnHeaders(); - $hasHeaders = $this->getSubmittedValue('skipColumnHeader'); - $headerPatterns = $this->getHeaderPatterns(); // For most fields using the html label is a good thing // but for contact ID we really want to specify ID. $this->_mapperFields['membership_contact_id'] = ts('Contact ID'); @@ -44,44 +40,13 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField { unset($sel1['membership_id']); } - $fieldMappings = $this->getFieldMappings(); - - foreach ($columnHeaders as $i => $columnHeader) { - $sel = &$this->addElement('hierselect', "mapper[$i]", ts('Mapper for Field %1', array(1 => $i)), NULL); + foreach ($this->getColumnHeaders() as $i => $columnHeader) { + $sel = &$this->addElement('hierselect', "mapper[$i]", ts('Mapper for Field %1', [1 => $i]), NULL); $sel->setOptions([$sel1]); - if ($this->getSubmittedValue('savedMapping')) { - $fieldMapping = $fieldMappings[$i] ?? NULL; - if (isset($fieldMappings[$i])) { - if ($fieldMapping['name'] != ts('do_not_import')) { - $defaults["mapper[$i]"] = [$fieldMapping['name']]; - } - else { - $defaults["mapper[$i]"] = []; - } - } - else { - if ($hasHeaders) { - $defaults["mapper[$i]"] = array($this->defaultFromHeader($columnHeader, $headerPatterns)); - } - } - //end of load mapping - } - else { - if ($this->getSubmittedValue('skipColumnHeader')) { - // Infer the default from the skipped headers if we have them - $defaults["mapper[$i]"] = array( - $this->defaultFromHeader($columnHeader, - $headerPatterns - ), - // $defaultLocationType->id - 0, - ); - } - } } $this->assign('initHideBoxes'); - $this->setDefaults($defaults); + $this->setDefaults($this->getDefaults()); $this->addFormButtons(); } @@ -246,4 +211,29 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField { return $highlightedFields; } + /** + * Get default values for the mapping. + * + * @return array + * + * @throws \CRM_Core_Exception + */ + protected function getDefaults(): array { + $defaults = []; + $headerPatterns = $this->getHeaderPatterns(); + $fieldMappings = $this->getFieldMappings(); + foreach ($this->getColumnHeaders() as $i => $columnHeader) { + if ($this->getSubmittedValue('savedMapping')) { + $fieldMapping = $fieldMappings[$i] ?? NULL; + if (isset($fieldMappings[$i])) { + $defaults["mapper[$i]"] = ($fieldMapping['name'] !== 'do_not_import') ? [$fieldMapping['name']] : []; + } + } + if (!isset($defaults["mapper[$i]"]) && $this->getSubmittedValue('skipColumnHeader')) { + $defaults["mapper[$i]"] = [$this->defaultFromHeader($columnHeader, $headerPatterns)]; + } + } + return $defaults; + } + } -- 2.25.1