* Get Query Group By Clause
* @param \CRM_Export_BAO_ExportProcessor $processor
* Export Mode
- * @param array $returnProperties
- * Return Properties
* @param object $query
* CRM_Contact_BAO_Query
*
* @return string
* Group By Clause
*/
- public static function getGroupBy($processor, $returnProperties, $query) {
+ public static function getGroupBy($processor, $query) {
$groupBy = NULL;
+ $returnProperties = $processor->getReturnProperties();
$exportMode = $processor->getExportMode();
$queryMode = $processor->getQueryMode();
if (!empty($returnProperties['tags']) || !empty($returnProperties['groups']) ||
if ($moreReturnProperties) {
$processor->setAdditionalRequestedReturnProperties($moreReturnProperties);
}
- $returnProperties = $processor->getReturnProperties();
$paymentTableId = $processor->getPaymentTableID();
if (!$selectAll && $componentTable && !empty($exportParams['additional_group'])) {
CRM_Contact_BAO_ProximityQuery::fixInputParams($params);
}
- list($query, $select, $from, $where, $having) = $processor->runQuery($params, $order, $returnProperties);
+ list($query, $select, $from, $where, $having) = $processor->runQuery($params, $order);
if ($mergeSameHousehold == 1) {
- $processor->setHouseholdMergeReturnProperties($returnProperties);
+ $processor->setHouseholdMergeReturnProperties();
}
// This perhaps only needs calling when $mergeSameHousehold == 1
$queryString = "$select $from $where $having";
- $groupBy = self::getGroupBy($processor, $returnProperties, $query);
+ $groupBy = self::getGroupBy($processor, $query);
$queryString .= $groupBy;
list($field, $dir) = explode(' ', $order, 2);
$field = trim($field);
- if (!empty($returnProperties[$field])) {
+ if (!empty($processor->getReturnProperties()[$field])) {
//CRM-15301
$queryString .= " ORDER BY $order";
}
$addPaymentHeader = FALSE;
- list($outputColumns, $metadata) = self::getExportStructureArrays($returnProperties, $processor);
+ list($outputColumns, $metadata) = self::getExportStructureArrays($processor);
if ($processor->isMergeSameAddress()) {
//make sure the addressee fields are selected
* However it still feels a bit like something that I'm too polite to write down and this should be seen
* as a step on the refactoring path rather than how it should be.
*
- * @param array $returnProperties
* @param \CRM_Export_BAO_ExportProcessor $processor
*
* @return array
* - b) this code is old & outdated. Submit your answers to circular bin or better
* yet find a way to comment them for posterity.
*/
- public static function getExportStructureArrays($returnProperties, $processor) {
+ public static function getExportStructureArrays($processor) {
$outputColumns = $metadata = [];
$queryFields = $processor->getQueryFields();
- foreach ($returnProperties as $key => $value) {
+ foreach ($processor->getReturnProperties() as $key => $value) {
if (($key != 'location' || !is_array($value)) && !$processor->isRelationshipTypeKey($key)) {
$outputColumns[$key] = $value;
$processor->addOutputSpecification($key);
/**
* @param $params
* @param $order
- * @param $returnProperties
+ *
* @return array
*/
- public function runQuery($params, $order, $returnProperties) {
+ public function runQuery($params, $order) {
+ $returnProperties = $this->getReturnProperties();
$addressWhere = '';
$params = array_merge($params, $this->getWhereParams());
if ($this->isPostalableOnly) {
*
* If we are using household merge we need to add these to the relationship properties to
* be retrieved.
- *
- * @param $returnProperties
*/
- public function setHouseholdMergeReturnProperties($returnProperties) {
+ public function setHouseholdMergeReturnProperties() {
+ $returnProperties = $this->getReturnProperties();
$returnProperties = array_diff_key($returnProperties, array_fill_keys(['location_type', 'im_provider'], 1));
foreach ($this->getHouseholdRelationshipTypes() as $householdRelationshipType) {
$this->relationshipReturnProperties[$householdRelationshipType] = $returnProperties;
'contribution_id' => 1,
];
- $contactRelationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType(
- NULL,
- NULL,
- NULL,
- NULL,
- TRUE,
- 'name',
- FALSE
- );
-
$query = new CRM_Contact_BAO_Query([], $returnProperties, NULL,
FALSE, FALSE, CRM_Contact_BAO_Query::MODE_CONTRIBUTE,
FALSE, TRUE, TRUE, NULL, 'AND'
preg_match_all($pattern, $select, $queryFieldAliases, PREG_PATTERN_ORDER);
$processor = new CRM_Export_BAO_ExportProcessor(CRM_Contact_BAO_Query::MODE_CONTRIBUTE, NULL, 'AND');
$processor->setQueryFields($query->_fields);
+ $processor->setReturnProperties($returnProperties);
- list($outputFields) = CRM_Export_BAO_Export::getExportStructureArrays($returnProperties, $processor, $contactRelationshipTypes, '');
+ list($outputFields) = CRM_Export_BAO_Export::getExportStructureArrays($processor);
foreach (array_keys($outputFields) as $fieldAlias) {
- if ($fieldAlias == 'Home-country') {
+ if ($fieldAlias === 'Home-country') {
$this->assertTrue(in_array($fieldAlias . '_id', $queryFieldAliases[1]), 'Country is subject to some funky translate so we make sure country id is present');
}
else {