Skip to content

Commit

Permalink
Simplify setting of address strings
Browse files Browse the repository at this point in the history
  • Loading branch information
eileenmcnaughton committed Jul 16, 2019
1 parent a40ca78 commit dfaecb4
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 27 deletions.
2 changes: 1 addition & 1 deletion CRM/Export/BAO/Export.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ public static function exportComponents(
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);
}
Expand Down
74 changes: 48 additions & 26 deletions CRM/Export/BAO/ExportProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -378,8 +378,14 @@ public function setAddresseeGreetingTemplate($addresseeGreetingTemplate) {
* @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);
Expand All @@ -392,6 +398,7 @@ public function __construct($exportMode, $requestedFields, $queryOperator, $isMe
$this->setAdditionalFieldsForSameAddressMerge();
$this->setAdditionalFieldsForPostalExport();
$this->setHouseholdMergeReturnProperties();
$this->setGreetingStringsForSameAddressMerge($formValues);
}

/**
Expand Down Expand Up @@ -1983,30 +1990,6 @@ public function buildMasterCopyArray($sql, $sharedAddress = FALSE) {
* @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,
Expand Down Expand Up @@ -2160,4 +2143,43 @@ public function getPreview($limit) {
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) {
if (($option = CRM_Utils_Array::value($key, $formValues)) !== FALSE) {
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']);
}
}

}

0 comments on commit dfaecb4

Please sign in to comment.