From 51d84eca30b49b72af285ef1435c7087c6c6cb7c Mon Sep 17 00:00:00 2001 From: eileen Date: Wed, 10 Jul 2019 14:20:21 +1200 Subject: [PATCH] [REF] cleanup setting of additional postal fields Further cleanup --- CRM/Export/BAO/Export.php | 9 +------- CRM/Export/BAO/ExportProcessor.php | 34 +++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/CRM/Export/BAO/Export.php b/CRM/Export/BAO/Export.php index ad62043964..1e46e6092e 100644 --- a/CRM/Export/BAO/Export.php +++ b/CRM/Export/BAO/Export.php @@ -209,14 +209,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c if ($processor->getRequestedFields() && $processor->isPostalableOnly() ) { - $postalColumns = ['is_deceased', 'do_not_mail', 'street_address', 'supplemental_address_1']; - $exportParams['postal_mailing_export']['temp_columns'] = []; - foreach ($postalColumns as $column) { - if (!array_key_exists($column, $returnProperties)) { - $returnProperties[$column] = 1; - $exportParams['postal_mailing_export']['temp_columns'][$column] = 1; - } - } + $exportParams['postal_mailing_export']['temp_columns'] = $processor->getAdditionalFieldsForPostalExport(); } // rectify params to what proximity search expects if there is a value for prox_distance diff --git a/CRM/Export/BAO/ExportProcessor.php b/CRM/Export/BAO/ExportProcessor.php index a587847921..a7dd3b5550 100644 --- a/CRM/Export/BAO/ExportProcessor.php +++ b/CRM/Export/BAO/ExportProcessor.php @@ -135,6 +135,37 @@ class CRM_Export_BAO_ExportProcessor { $this->isMergeSameAddress = $isMergeSameAddress; } + /** + * Additional fields required to export postal fields. + * + * @var array + */ + protected $additionalFieldsForPostalExport = []; + + /** + * Get additional fields required to do a postal export. + * + * @return array + */ + public function getAdditionalFieldsForPostalExport() { + return $this->additionalFieldsForPostalExport; + } + + /** + * Set additional fields required for a postal export. + */ + public function setAdditionalFieldsForPostalExport() { + if ($this->getRequestedFields() && $this->isPostalableOnly()) { + $fields = ['is_deceased', 'do_not_mail', 'street_address', 'supplemental_address_1']; + foreach ($fields as $index => $field) { + if (!empty($this->getReturnProperties()[$field])) { + unset($field[$index]); + } + } + $this->additionalFieldsForPostalExport = array_fill_keys($fields, 1); + } + } + /** * Only export contacts that can receive postal mail. * @@ -278,6 +309,7 @@ class CRM_Export_BAO_ExportProcessor { $this->setIsMergeSameAddress($isMergeSameAddress); $this->setReturnProperties($this->determineReturnProperties()); $this->setAdditionalFieldsForSameAddressMerge(); + $this->setAdditionalFieldsForPostalExport(); } /** @@ -312,7 +344,7 @@ class CRM_Export_BAO_ExportProcessor { * @return array */ public function getReturnProperties() { - return array_merge($this->returnProperties, $this->getAdditionalRequestedReturnProperties(), $this->getAdditionalFieldsForSameAddressMerge()); + return array_merge($this->returnProperties, $this->getAdditionalRequestedReturnProperties(), $this->getAdditionalFieldsForSameAddressMerge(), $this->getAdditionalFieldsForPostalExport()); } /** -- 2.25.1