From e530cef4e3b24686c65672fe783030df40907b94 Mon Sep 17 00:00:00 2001 From: eileen Date: Wed, 10 Jul 2019 13:18:11 +1200 Subject: [PATCH] Cleaner handling of additional return properties --- CRM/Export/BAO/Export.php | 12 +++------- CRM/Export/BAO/ExportProcessor.php | 35 +++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/CRM/Export/BAO/Export.php b/CRM/Export/BAO/Export.php index f3431116119d..7042e446b204 100644 --- a/CRM/Export/BAO/Export.php +++ b/CRM/Export/BAO/Export.php @@ -180,6 +180,9 @@ public static function exportComponents( ); $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator, $mergeSameHousehold, $isPostalOnly); + if ($moreReturnProperties) { + $processor->setAdditionalRequestedReturnProperties($moreReturnProperties); + } $returnProperties = $processor->getReturnProperties(); $paymentTableId = $processor->getPaymentTableID(); @@ -215,15 +218,6 @@ public static function exportComponents( CRM_Core_DAO::executeQuery($query); } - if ($moreReturnProperties) { - // fix for CRM-7066 - if (!empty($moreReturnProperties['group'])) { - unset($moreReturnProperties['group']); - $moreReturnProperties['groups'] = 1; - } - $returnProperties = array_merge($returnProperties, $moreReturnProperties); - } - if ($processor->getRequestedFields() && $processor->isPostalableOnly() ) { diff --git a/CRM/Export/BAO/ExportProcessor.php b/CRM/Export/BAO/ExportProcessor.php index b2707dea11f7..909782e76119 100644 --- a/CRM/Export/BAO/ExportProcessor.php +++ b/CRM/Export/BAO/ExportProcessor.php @@ -118,6 +118,39 @@ class CRM_Export_BAO_ExportProcessor { */ protected $householdsToSkip = []; + /** + * Additional fields to return. + * + * This doesn't make much sense when we have a fields set but search build add it's own onto + * the 'Primary fields' (all) option. + * + * @var array + */ + protected $additionalRequestedReturnProperties = []; + + /** + * Get additional return properties. + * + * @return array + */ + public function getAdditionalRequestedReturnProperties() { + return $this->additionalRequestedReturnProperties; + } + + /** + * Set additional return properties. + * + * @param array $value + */ + public function setAdditionalRequestedReturnProperties($value) { + // fix for CRM-7066 + if (!empty($value['group'])) { + unset($value['group']); + $value['groups'] = 1; + } + $this->additionalRequestedReturnProperties = $value; + } + /** * Get return properties by relationship. * @return array @@ -220,7 +253,7 @@ public function setRequestedFields($requestedFields) { * @return array */ public function getReturnProperties() { - return $this->returnProperties; + return array_merge($this->returnProperties, $this->getAdditionalRequestedReturnProperties()); } /**