From ed81a415237cd9a09462039ef04af932d9a73b36 Mon Sep 17 00:00:00 2001 From: Deepak Srivastava Date: Tue, 4 Mar 2014 19:56:13 +0530 Subject: [PATCH] use group by to ensure row count correctness in any case. --- CRM/Contribute/BAO/Query.php | 6 +++++- CRM/Contribute/Selector/Search.php | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CRM/Contribute/BAO/Query.php b/CRM/Contribute/BAO/Query.php index 43920394a5..092726307c 100644 --- a/CRM/Contribute/BAO/Query.php +++ b/CRM/Contribute/BAO/Query.php @@ -368,13 +368,16 @@ class CRM_Contribute_BAO_Query { if ($value == 'only_scredits') { $query->_where[$grouping][] = "contribution_search_scredit_combined.scredit_id IS NOT NULL"; $query->_qill[$grouping][] = ts('Contributions OR Soft Credits? - Soft Credits Only'); + $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1; $query->_tables['civicrm_contribution_soft'] = $query->_whereTables['civicrm_contribution_soft'] = 1; } else if ($value == 'both_related') { $query->_where[$grouping][] = "contribution_search_scredit_combined.filter_id IS NOT NULL"; $query->_qill[$grouping][] = ts('Contributions OR Soft Credits? - Both But Related'); + $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1; $query->_tables['civicrm_contribution_soft'] = $query->_whereTables['civicrm_contribution_soft'] = 1; } else if ($value == 'both') { $query->_qill[$grouping][] = ts('Contributions OR Soft Credits? - Both'); + $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1; $query->_tables['civicrm_contribution_soft'] = $query->_whereTables['civicrm_contribution_soft'] = 1; } // default option: $value == 'only_contribs' @@ -780,8 +783,9 @@ class CRM_Contribute_BAO_Query { static function initializeAnySoftCreditClause(&$query) { if (self::isSoftCreditOptionEnabled($query->_params)) { if ($query->_mode & CRM_Contact_BAO_Query::MODE_CONTRIBUTE) { - unset($query->_distinctComponentClause, $query->_groupByComponentClause); + unset($query->_distinctComponentClause); $query->_rowCountClause = " count(civicrm_contribution.id)"; + $query->_groupByComponentClause = " GROUP BY contribution_search_scredit_combined.id, contribution_search_scredit_combined.contact_id, contribution_search_scredit_combined.scredit_id "; } } } diff --git a/CRM/Contribute/Selector/Search.php b/CRM/Contribute/Selector/Search.php index cb17eef2fe..1301561e42 100644 --- a/CRM/Contribute/Selector/Search.php +++ b/CRM/Contribute/Selector/Search.php @@ -200,6 +200,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C ); if ($this->_includeSoftCredits) { $this->_query->_rowCountClause = " count(civicrm_contribution.id)"; + $this->_query->_groupByComponentClause = " GROUP BY contribution_search_scredit_combined.id, contribution_search_scredit_combined.contact_id, contribution_search_scredit_combined.scredit_id "; } else { $this->_query->_distinctComponentClause = " civicrm_contribution.id"; $this->_query->_groupByComponentClause = " GROUP BY civicrm_contribution.id "; -- 2.25.1