From: eileen Date: Tue, 16 Jul 2019 20:37:11 +0000 (+1200) Subject: Simplify setting of address strings X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=1e9e062d1b85920b464bb32c68f9c68b5e1d5fbd;p=civicrm-core.git Simplify setting of address strings --- diff --git a/CRM/Export/BAO/Export.php b/CRM/Export/BAO/Export.php index ecf63bcaaf..1cd09f92c0 100644 --- a/CRM/Export/BAO/Export.php +++ b/CRM/Export/BAO/Export.php @@ -146,7 +146,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c CRM_Contact_BAO_ProximityQuery::fixInputParams($params); } // @todo everything from this line up should go back to the calling functions. - $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator, $mergeSameHousehold, $isPostalOnly, $mergeSameAddress); + $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator, $mergeSameHousehold, $isPostalOnly, $mergeSameAddress, $exportParams); if ($moreReturnProperties) { $processor->setAdditionalRequestedReturnProperties($moreReturnProperties); } diff --git a/CRM/Export/BAO/ExportProcessor.php b/CRM/Export/BAO/ExportProcessor.php index 076804b051..04f62644d7 100644 --- a/CRM/Export/BAO/ExportProcessor.php +++ b/CRM/Export/BAO/ExportProcessor.php @@ -378,8 +378,14 @@ class CRM_Export_BAO_ExportProcessor { * @param bool $isMergeSameHousehold * @param bool $isPostalableOnly * @param bool $isMergeSameAddress - */ - public function __construct($exportMode, $requestedFields, $queryOperator, $isMergeSameHousehold = FALSE, $isPostalableOnly = FALSE, $isMergeSameAddress = FALSE) { + * @param array $formValues + * Values from the export options form on contact export. We currently support these keys + * - postal_greeting + * - postal_other + * - addresee_greeting + * - addressee_other + */ + public function __construct($exportMode, $requestedFields, $queryOperator, $isMergeSameHousehold = FALSE, $isPostalableOnly = FALSE, $isMergeSameAddress = FALSE, $formValues = []) { $this->setExportMode($exportMode); $this->setQueryMode(); $this->setQueryOperator($queryOperator); @@ -392,6 +398,7 @@ class CRM_Export_BAO_ExportProcessor { $this->setAdditionalFieldsForSameAddressMerge(); $this->setAdditionalFieldsForPostalExport(); $this->setHouseholdMergeReturnProperties(); + $this->setGreetingStringsForSameAddressMerge($formValues); } /** @@ -1983,30 +1990,6 @@ class CRM_Export_BAO_ExportProcessor { * @param array $exportParams */ public function mergeSameAddress(&$sqlColumns, $exportParams) { - $greetingOptions = CRM_Export_Form_Select::getGreetingOptions(); - - if (!empty($greetingOptions)) { - // Greeting options is keyed by 'postal_greeting' or 'addressee'. - foreach ($greetingOptions as $key => $value) { - if ($option = CRM_Utils_Array::value($key, $exportParams)) { - if ($greetingOptions[$key][$option] == ts('Other')) { - $exportParams[$key] = $exportParams["{$key}_other"]; - } - elseif ($greetingOptions[$key][$option] == ts('List of names')) { - $exportParams[$key] = ''; - } - else { - $exportParams[$key] = $greetingOptions[$key][$option]; - } - } - } - } - if (!empty($exportParams['postal_greeting'])) { - $this->setPostalGreetingTemplate($exportParams['postal_greeting']); - } - if (!empty($exportParams['addressee'])) { - $this->setAddresseeGreetingTemplate($exportParams['addressee']); - } $tableName = $this->getTemporaryTable(); // check if any records are present based on if they have used shared address feature, @@ -2160,4 +2143,44 @@ WHERE id IN ( $deleteIDString ) return $rows; } + /** + * Set the template strings to be used when merging two contacts with the same address. + * + * @param array $formValues + * Values from first form. In this case we care about the keys + * - postal_greeting + * - postal_other + * - address_greeting + * - addressee_other + * + * @return mixed + */ + protected function setGreetingStringsForSameAddressMerge($formValues) { + $greetingOptions = CRM_Export_Form_Select::getGreetingOptions(); + + if (!empty($greetingOptions)) { + // Greeting options is keyed by 'postal_greeting' or 'addressee'. + foreach ($greetingOptions as $key => $value) { + $option = CRM_Utils_Array::value($key, $formValues); + if ($option) { + if ($greetingOptions[$key][$option] == ts('Other')) { + $formValues[$key] = $formValues["{$key}_other"]; + } + elseif ($greetingOptions[$key][$option] == ts('List of names')) { + $formValues[$key] = ''; + } + else { + $formValues[$key] = $greetingOptions[$key][$option]; + } + } + } + } + if (!empty($formValues['postal_greeting'])) { + $this->setPostalGreetingTemplate($formValues['postal_greeting']); + } + if (!empty($formValues['addressee'])) { + $this->setAddresseeGreetingTemplate($formValues['addressee']); + } + } + }