From b708c08d4b6eb5344f30cf1efe088982168daeca Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Tue, 31 May 2016 15:22:10 +0530 Subject: [PATCH] optimisation fixes CRM-18439 --- CRM/Case/BAO/Case.php | 3 +- CRM/Contact/BAO/Query.php | 34 +++++++++---------- CRM/Mailing/BAO/Mailing.php | 2 +- CRM/Report/Form.php | 8 +++-- CRM/Report/Form/Activity.php | 9 ++--- CRM/Report/Form/ActivitySummary.php | 2 +- CRM/Report/Form/Case/Demographics.php | 3 +- CRM/Report/Form/Case/Detail.php | 3 +- CRM/Report/Form/Case/TimeSpent.php | 3 +- CRM/Report/Form/Contact/CurrentEmployer.php | 3 +- CRM/Report/Form/Contact/Relationship.php | 3 +- CRM/Report/Form/Contribute/Bookkeeping.php | 4 +-- CRM/Report/Form/Contribute/Detail.php | 9 +++-- CRM/Report/Form/Contribute/History.php | 3 +- .../Form/Contribute/HouseholdSummary.php | 3 +- .../Form/Contribute/OrganizationSummary.php | 3 +- CRM/Report/Form/Contribute/PCP.php | 3 +- CRM/Report/Form/Contribute/Recur.php | 3 +- CRM/Report/Form/Contribute/RecurSummary.php | 3 +- CRM/Report/Form/Contribute/TopDonor.php | 3 +- CRM/Report/Form/Event/Income.php | 5 ++- .../Form/Event/ParticipantListCount.php | 3 +- CRM/Report/Form/Event/ParticipantListing.php | 3 +- CRM/Report/Form/Event/Summary.php | 3 +- CRM/Report/Form/Grant/Statistics.php | 5 ++- CRM/Report/Form/Mailing/Bounce.php | 3 +- CRM/Report/Form/Mailing/Clicks.php | 3 +- CRM/Report/Form/Mailing/Opened.php | 3 +- CRM/Report/Form/Mailing/Summary.php | 3 +- CRM/Report/Form/Member/ContributionDetail.php | 3 +- CRM/Report/Form/Member/Summary.php | 3 +- CRM/Report/Form/Pledge/Detail.php | 3 +- CRM/Report/Form/Pledge/Pbnp.php | 3 +- 33 files changed, 62 insertions(+), 88 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 5555623883..a9a2b2d49c 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -986,8 +986,7 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c AND ca.activity_date_time <= '{$toActivityDate}'"; } - $groupBy = " - GROUP BY id " . CRM_Contact_BAO_Query::getGroupByFromSelectColumns($selectClause, 'ca.id'); + $groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($selectClause, 'ca.id'); $sortBy = CRM_Utils_Array::value('sortBy', $params); if (!$sortBy) { diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index 80115faa55..37289701c8 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -4334,7 +4334,6 @@ civicrm_relationship.is_permission_a_b = 0 // add group by if ($query->_useGroupBy) { - $sql .= ' GROUP BY contact_a.id'; $sql .= self::getGroupByFromSelectColumns($query->_select, 'contact_a.id'); } if (!empty($sort)) { @@ -4530,12 +4529,14 @@ civicrm_relationship.is_permission_a_b = 0 * @return string */ public static function getGroupByFromSelectColumns($selectClauses, $groupBy = NULL) { - $mysqlVersion = CRM_Core_DAO::singleValueQuery('SELECT VERSION()'); + $groupBy = (array) $groupBy; $sqlMode = CRM_Core_DAO::singleValueQuery('SELECT @@sql_mode'); - if (version_compare($mysqlVersion, '5.7', '<') && (!empty($sqlMode) && !in_array('ONLY_FULL_GROUP_BY', explode(',', $sqlMode)))) { - return ''; + + //return if ONLY_FULL_GROUP_BY is not enabled. + if (!empty($sqlMode) && !in_array('ONLY_FULL_GROUP_BY', explode(',', $sqlMode))) { + return " GROUP BY " . implode(', ', $groupBy); } - $groupBy = (array) $groupBy; + $regexToExclude = '/(ROUND|AVG|COUNT|GROUP_CONCAT|SUM|MAX|MIN)\(/i'; foreach ($selectClauses as $key => $val) { $aliasArray = preg_split('/ as /i', $val); @@ -4545,7 +4546,7 @@ civicrm_relationship.is_permission_a_b = 0 foreach ($aliasArray as $key => $value) { $alias = current(preg_split('/ as /i', $value)); if (!in_array($alias, $groupBy) && preg_match($regexToExclude, trim($alias)) !== 1) { - $selectColAlias[] = $alias; + $groupBy[] = $alias; } } } @@ -4555,18 +4556,17 @@ civicrm_relationship.is_permission_a_b = 0 // exclude columns which are already included in groupBy and aggregate functions from select if (!in_array($selectColumn, $groupBy) && preg_match($regexToExclude, trim($selectColumn)) !== 1) { if (!empty($alias) && preg_match($dateRegex, trim($selectColumn))) { - $selectColAlias[] = $alias; + $groupBy[] = $alias; } else { - $selectColAlias[] = $selectColumn; + $groupBy[] = $selectColumn; } } } } - if (!empty($selectColAlias)) { - $groupStmt = implode(', ', $selectColAlias); - return empty($groupBy) ? $groupStmt : ", {$groupStmt}"; + if (!empty($groupBy)) { + return " GROUP BY " . implode(', ', $groupBy); } return ''; } @@ -4631,11 +4631,11 @@ civicrm_relationship.is_permission_a_b = 0 } // building the query string - $groupBy = NULL; + $groupBy = $groupByCol = NULL; if (!$count) { if (isset($this->_groupByComponentClause)) { $groupBy = $this->_groupByComponentClause; - $groupCols = preg_replace('/^' . preg_quote('GROUP BY ', '/') . '/', '', $this->_groupByComponentClause); + $groupCols = preg_replace('/^GROUP BY /', '', trim($this->_groupByComponentClause)); $groupByCol = explode(', ', $groupCols); } elseif ($this->_useGroupBy) { @@ -4667,8 +4667,8 @@ civicrm_relationship.is_permission_a_b = 0 list($select, $from, $where, $having) = $this->query($count, $sortByChar, $groupContacts, $onlyDeleted); - if (!empty($groupBy)) { - $groupBy .= self::getGroupByFromSelectColumns($this->_select, $groupByCol); + if (!empty($groupByCol)) { + $groupBy = self::getGroupByFromSelectColumns($this->_select, $groupByCol); } if ($additionalWhereClause) { @@ -4728,8 +4728,8 @@ civicrm_relationship.is_permission_a_b = 0 list($select, $from, $where) = $this->query(FALSE, FALSE, FALSE, $onlyDeleted); $from = " FROM civicrm_prevnext_cache pnc INNER JOIN civicrm_contact contact_a ON contact_a.id = pnc.entity_id1 AND pnc.cacheKey = '$cacheKey' " . substr($from, 31); $order = " ORDER BY pnc.id"; - $groupBy = " GROUP BY contact_a.id, pnc.id"; - $groupBy .= self::getGroupByFromSelectColumns($this->_select, 'contact_a.id'); + $groupByCol = array('contact_a.id', 'pnc.id'); + $groupBy = self::getGroupByFromSelectColumns($this->_select, $groupByCol); $limit = " LIMIT $offset, $rowCount"; $query = "$select $from $where $groupBy $order $limit"; diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 5077879916..fa995fb55f 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -2531,7 +2531,7 @@ LEFT JOIN civicrm_mailing_group g ON g.mailing_id = m.id WHERE $mailingACL $additionalClause"; if (!empty($groupFromSelect)) { - $query .= " GROUP BY {$groupFromSelect}"; + $query .= $groupFromSelect; } if ($sort) { diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index 71d511671c..07a6c87db7 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -2691,8 +2691,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND } if (!empty($groupBys)) { - $this->_groupBy = "GROUP BY " . implode(', ', $groupBys); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBys); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBys); } } @@ -2844,12 +2843,14 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND foreach (array_merge($sectionAliases, $this->_selectAliases) as $alias) { $ifnulls[] = "ifnull($alias, '') as $alias"; } + $this->_select = "SELECT " . implode(", ", $ifnulls); + $this->appendSelect($ifnulls, $sectionAliases); // Group (un-limited) report by all aliases and get counts. This might // be done more efficiently when the contents of $sql are known, ie. by // overriding this method in the report class. - $query = "select " . implode(", ", $ifnulls) . + $query = $this->_select . ", count(*) as ct from ($sql) as subquery group by " . implode(", ", $sectionAliases); @@ -4625,6 +4626,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a CRM_Core_DAO::executeQuery($tempQuery); $updateQuery = "UPDATE {$tempTable} SET {$columnName}_date = date({$columnName})"; CRM_Core_DAO::executeQuery($updateQuery); + $this->_selectClauses[] = "{$columnName}_date"; $this->_select .= ", {$columnName}_date"; $this->_sections["{$columnName}_date"] = $this->_sections["{$columnName}"]; unset($this->_sections["{$columnName}"]); diff --git a/CRM/Report/Form/Activity.php b/CRM/Report/Form/Activity.php index 9a4f337262..a78eda2db2 100644 --- a/CRM/Report/Form/Activity.php +++ b/CRM/Report/Form/Activity.php @@ -646,8 +646,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { * Override group by function. */ public function groupBy() { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_activity']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_activity']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_activity']}.id"); } /** @@ -835,7 +834,7 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; $groupByFromSelect = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, 'civicrm_activity_id'); $sql = "{$this->_select} FROM civireport_activity_temp_target tar -GROUP BY civicrm_activity_id {$groupByFromSelect} {$this->_having} {$this->_orderBy} {$this->_limit}"; +{$groupByFromSelect} {$this->_having} {$this->_orderBy} {$this->_limit}"; $this->buildRows($sql, $rows); // format result set. @@ -1035,8 +1034,10 @@ GROUP BY civicrm_activity_id {$groupByFromSelect} {$this->_having} {$this->_orde foreach (array_merge($sectionAliases, $this->_selectAliases) as $alias) { $ifnulls[] = "ifnull($alias, '') as $alias"; } + $this->_select = "SELECT " . implode(", ", $ifnulls); + $this->appendSelect($ifnulls, $sectionAliases); - $query = "select " . implode(", ", $ifnulls) . + $query = $this->_select . ", count(DISTINCT civicrm_activity_id) as ct from civireport_activity_temp_target group by " . implode(", ", $sectionAliases); diff --git a/CRM/Report/Form/ActivitySummary.php b/CRM/Report/Form/ActivitySummary.php index 94633467d5..43c2169719 100644 --- a/CRM/Report/Form/ActivitySummary.php +++ b/CRM/Report/Form/ActivitySummary.php @@ -440,7 +440,7 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_activity']}.id "; } if ($includeSelectCol) { - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } } diff --git a/CRM/Report/Form/Case/Demographics.php b/CRM/Report/Form/Case/Demographics.php index 33d81057e6..3badc118d5 100644 --- a/CRM/Report/Form/Case/Demographics.php +++ b/CRM/Report/Form/Case/Demographics.php @@ -359,8 +359,7 @@ where (cg.extends='Contact' OR cg.extends='Individual' OR cg.extends_entity_colu public function groupBy() { $groupBy = array("{$this->_aliases['civicrm_contact']}.id", "{$this->_aliases['civicrm_case']}.id"); - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Case/Detail.php b/CRM/Report/Form/Case/Detail.php index 0a5715d53c..1945b90348 100644 --- a/CRM/Report/Form/Case/Detail.php +++ b/CRM/Report/Form/Case/Detail.php @@ -452,8 +452,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { } public function groupBy() { - $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_case']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_case']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_case']}.id"); } /** diff --git a/CRM/Report/Form/Case/TimeSpent.php b/CRM/Report/Form/Case/TimeSpent.php index 865e3b34d5..659ee4a9be 100644 --- a/CRM/Report/Form/Case/TimeSpent.php +++ b/CRM/Report/Form/Case/TimeSpent.php @@ -293,8 +293,7 @@ class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form { $groupBy[] = "{$this->_aliases['civicrm_activity']}.activity_type_id"; } - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } } diff --git a/CRM/Report/Form/Contact/CurrentEmployer.php b/CRM/Report/Form/Contact/CurrentEmployer.php index 674958af02..35cd3362a3 100644 --- a/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/CRM/Report/Form/Contact/CurrentEmployer.php @@ -327,8 +327,7 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} "{$this->_aliases['civicrm_contact']}.id" ); - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Contact/Relationship.php b/CRM/Report/Form/Contact/Relationship.php index 56073269b0..0b44dffd90 100644 --- a/CRM/Report/Form/Contact/Relationship.php +++ b/CRM/Report/Form/Contact/Relationship.php @@ -566,8 +566,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $groupBy = array("{$this->_aliases['civicrm_relationship']}.id"); } - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Contribute/Bookkeeping.php b/CRM/Report/Form/Contribute/Bookkeeping.php index fc350b2a6f..12e704e9bf 100644 --- a/CRM/Report/Form/Contribute/Bookkeeping.php +++ b/CRM/Report/Form/Contribute/Bookkeeping.php @@ -513,13 +513,11 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form { } public function groupBy() { - $groupFromSelect = ''; $groupBy = array( "{$this->_aliases['civicrm_entity_financial_trxn']}.id", "{$this->_aliases['civicrm_line_item']}.id" ); - $groupFromSelect = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy) . " {$groupFromSelect}"; + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } /** diff --git a/CRM/Report/Form/Contribute/Detail.php b/CRM/Report/Form/Contribute/Detail.php index b94a8a142f..b20152aec9 100644 --- a/CRM/Report/Form/Contribute/Detail.php +++ b/CRM/Report/Form/Contribute/Detail.php @@ -458,8 +458,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { public function groupBy() { $groupBy = array("{$this->_aliases['civicrm_contact']}.id", "{$this->_aliases['civicrm_contribution']}.id"); - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } /** @@ -882,6 +881,8 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu foreach (array_merge($sectionAliases, $this->_selectAliases) as $alias) { $ifnulls[] = "ifnull($alias, '') as $alias"; } + $this->_select = "SELECT " . implode(", ", $ifnulls); + $this->appendSelect($ifnulls, $sectionAliases); /* Group (un-limited) report by all aliases and get counts. This might * be done more efficiently when the contents of $sql are known, ie. by @@ -897,9 +898,7 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu $showsumcontribs = TRUE; } - $query = "select " - . implode(", ", $ifnulls) - . + $query = $this->_select . "$addtotals, count(*) as ct from civireport_contribution_detail_temp3 group by " . implode(", ", $sectionAliases); // initialize array of total counts diff --git a/CRM/Report/Form/Contribute/History.php b/CRM/Report/Form/Contribute/History.php index 6ae62a5c36..65ad18ea85 100644 --- a/CRM/Report/Form/Contribute/History.php +++ b/CRM/Report/Form/Contribute/History.php @@ -484,8 +484,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { "{$this->_aliases['civicrm_contribution']}.contact_id", "YEAR({$this->_aliases['civicrm_contribution']}.receive_date)", ); - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } /** diff --git a/CRM/Report/Form/Contribute/HouseholdSummary.php b/CRM/Report/Form/Contribute/HouseholdSummary.php index d72b7b929f..0c0b7f9654 100644 --- a/CRM/Report/Form/Contribute/HouseholdSummary.php +++ b/CRM/Report/Form/Contribute/HouseholdSummary.php @@ -325,8 +325,7 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form { "{$this->_aliases['civicrm_contribution']}.id", "{$this->_aliases['civicrm_relationship']}.relationship_type_id", ); - $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_relationship']}.$this->householdContact, {$this->_aliases['civicrm_relationship']}.$this->otherContact , {$this->_aliases['civicrm_contribution']}.id, {$this->_aliases['civicrm_relationship']}.relationship_type_id "; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Contribute/OrganizationSummary.php b/CRM/Report/Form/Contribute/OrganizationSummary.php index 82120133eb..0116c5a54e 100644 --- a/CRM/Report/Form/Contribute/OrganizationSummary.php +++ b/CRM/Report/Form/Contribute/OrganizationSummary.php @@ -335,8 +335,7 @@ class CRM_Report_Form_Contribute_OrganizationSummary extends CRM_Report_Form { "{$this->_aliases['civicrm_contribution']}.id", "{$this->_aliases['civicrm_relationship']}.relationship_type_id", ); - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Contribute/PCP.php b/CRM/Report/Form/Contribute/PCP.php index 39fe3b4d1a..52074d09e1 100644 --- a/CRM/Report/Form/Contribute/PCP.php +++ b/CRM/Report/Form/Contribute/PCP.php @@ -193,8 +193,7 @@ LEFT JOIN civicrm_contribution_page {$this->_aliases['civicrm_contribution_page' } public function groupBy() { - $groupFromSelect = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_pcp']}.id"); - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_pcp']}.id {$groupFromSelect}"; + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_pcp']}.id"); } public function orderBy() { diff --git a/CRM/Report/Form/Contribute/Recur.php b/CRM/Report/Form/Contribute/Recur.php index 2db3acfe84..9e5ff3ccec 100644 --- a/CRM/Report/Form/Contribute/Recur.php +++ b/CRM/Report/Form/Contribute/Recur.php @@ -253,8 +253,7 @@ class CRM_Report_Form_Contribute_Recur extends CRM_Report_Form { } public function groupBy() { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_contribution_recur']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_contribution_recur']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_contribution_recur']}.id"); } public function where() { diff --git a/CRM/Report/Form/Contribute/RecurSummary.php b/CRM/Report/Form/Contribute/RecurSummary.php index 9b41a4816a..8cf5991c41 100644 --- a/CRM/Report/Form/Contribute/RecurSummary.php +++ b/CRM/Report/Form/Contribute/RecurSummary.php @@ -224,8 +224,7 @@ class CRM_Report_Form_Contribute_RecurSummary extends CRM_Report_Form { } public function groupBy() { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_contribution_recur']}.payment_instrument_id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_contribution_recur']}.payment_instrument_id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_contribution_recur']}.payment_instrument_id"); } /** diff --git a/CRM/Report/Form/Contribute/TopDonor.php b/CRM/Report/Form/Contribute/TopDonor.php index 48dc9b3e03..3e71627dc1 100644 --- a/CRM/Report/Form/Contribute/TopDonor.php +++ b/CRM/Report/Form/Contribute/TopDonor.php @@ -375,8 +375,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { } public function groupBy() { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_contact']}.id, {$this->_aliases['civicrm_contribution']}.currency"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, array("{$this->_aliases['civicrm_contact']}.id", "{$this->_aliases['civicrm_contribution']}.currency")); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, array("{$this->_aliases['civicrm_contact']}.id", "{$this->_aliases['civicrm_contribution']}.currency")); } public function postProcess() { diff --git a/CRM/Report/Form/Event/Income.php b/CRM/Report/Form/Event/Income.php index 25288427f3..6dabed59ac 100644 --- a/CRM/Report/Form/Event/Income.php +++ b/CRM/Report/Form/Event/Income.php @@ -108,6 +108,7 @@ class CRM_Report_Form_Event_Income extends CRM_Report_Form_Event { "civicrm_option_value.label as event_type", "civicrm_participant.fee_currency as currency", ); + $groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($select); $sql = " SELECT " . implode(', ', $select) . ", @@ -121,9 +122,7 @@ class CRM_Report_Form_Event_Income extends CRM_Report_Form_Event { LEFT JOIN civicrm_participant ON ( civicrm_event.id = civicrm_participant.event_id {$activeParticipantClause} AND civicrm_participant.is_test = 0 ) - WHERE civicrm_event.id IN( {$eventID}) - - GROUP BY " . CRM_Contact_BAO_Query::getGroupByFromSelectColumns($select); + WHERE civicrm_event.id IN( {$eventID}) {$groupBy}"; $eventDAO = CRM_Core_DAO::executeQuery($sql); $currency = array(); diff --git a/CRM/Report/Form/Event/ParticipantListCount.php b/CRM/Report/Form/Event/ParticipantListCount.php index e6adfd7769..bc95ee0b41 100644 --- a/CRM/Report/Form/Event/ParticipantListCount.php +++ b/CRM/Report/Form/Event/ParticipantListCount.php @@ -475,8 +475,7 @@ class CRM_Report_Form_Event_ParticipantListCount extends CRM_Report_Form_Event { // user doesn't select a column to group by, we should group by participant id. parent::groupBy(); if (empty($this->_groupBy)) { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_participant']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_participant']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_participant']}.id"); } } diff --git a/CRM/Report/Form/Event/ParticipantListing.php b/CRM/Report/Form/Event/ParticipantListing.php index 976d4240a3..2671387497 100644 --- a/CRM/Report/Form/Event/ParticipantListing.php +++ b/CRM/Report/Form/Event/ParticipantListing.php @@ -629,8 +629,7 @@ ORDER BY cv.label } public function groupBy() { - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_participant']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_participant']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_participant']}.id"); } public function postProcess() { diff --git a/CRM/Report/Form/Event/Summary.php b/CRM/Report/Form/Event/Summary.php index 3e74490040..17ee01029e 100644 --- a/CRM/Report/Form/Event/Summary.php +++ b/CRM/Report/Form/Event/Summary.php @@ -180,8 +180,7 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form_Event { public function groupBy() { $this->assign('chartSupported', TRUE); - $this->_groupBy = " GROUP BY {$this->_aliases['civicrm_event']}.id"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_event']}.id"); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_event']}.id"); } /** diff --git a/CRM/Report/Form/Grant/Statistics.php b/CRM/Report/Form/Grant/Statistics.php index b609a33496..421a8781ef 100644 --- a/CRM/Report/Form/Grant/Statistics.php +++ b/CRM/Report/Form/Grant/Statistics.php @@ -325,9 +325,8 @@ WHERE {$this->_aliases['civicrm_grant']}.amount_total IS NOT NULL } } } - if (!empty($this->_groupBy)) { - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + if (!empty($groupBy)) { + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } } diff --git a/CRM/Report/Form/Mailing/Bounce.php b/CRM/Report/Form/Mailing/Bounce.php index 6aa4b8dd55..c994faa1ee 100644 --- a/CRM/Report/Form/Mailing/Bounce.php +++ b/CRM/Report/Form/Mailing/Bounce.php @@ -364,8 +364,7 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { else { $groupBy = "{$this->_aliases['civicrm_mailing_event_bounce']}.id"; } - $this->_groupBy = " GROUP BY {$groupBy}"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function postProcess() { diff --git a/CRM/Report/Form/Mailing/Clicks.php b/CRM/Report/Form/Mailing/Clicks.php index 316a3588b9..de9b1e2072 100644 --- a/CRM/Report/Form/Mailing/Clicks.php +++ b/CRM/Report/Form/Mailing/Clicks.php @@ -264,8 +264,7 @@ class CRM_Report_Form_Mailing_Clicks extends CRM_Report_Form { else { $groupBy = "civicrm_mailing_event_trackable_url_open.id"; } - $this->_groupBy = " GROUP BY {$groupBy}"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function postProcess() { diff --git a/CRM/Report/Form/Mailing/Opened.php b/CRM/Report/Form/Mailing/Opened.php index 7f04ddeaaa..3d6649dd45 100644 --- a/CRM/Report/Form/Mailing/Opened.php +++ b/CRM/Report/Form/Mailing/Opened.php @@ -242,8 +242,7 @@ class CRM_Report_Form_Mailing_Opened extends CRM_Report_Form { else { $groupBy = "civicrm_mailing_event_queue.email_id"; } - $this->_groupBy = " GROUP BY {$groupBy}"; - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function postProcess() { diff --git a/CRM/Report/Form/Mailing/Summary.php b/CRM/Report/Form/Mailing/Summary.php index 641f9cdc7f..2c2a0b798d 100644 --- a/CRM/Report/Form/Mailing/Summary.php +++ b/CRM/Report/Form/Mailing/Summary.php @@ -463,8 +463,7 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form { "{$this->_aliases['civicrm_mailing']}.id", "{$this->_aliases['civicrm_mailing_job']}.end_date", ); - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Member/ContributionDetail.php b/CRM/Report/Form/Member/ContributionDetail.php index 85f39a1ff5..b404a55399 100644 --- a/CRM/Report/Form/Member/ContributionDetail.php +++ b/CRM/Report/Form/Member/ContributionDetail.php @@ -594,8 +594,7 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form { "{$this->_aliases['civicrm_contact']}.id", "{$this->_aliases['civicrm_contribution']}.id", ); - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { diff --git a/CRM/Report/Form/Member/Summary.php b/CRM/Report/Form/Member/Summary.php index 3108adb456..c238084cb5 100644 --- a/CRM/Report/Form/Member/Summary.php +++ b/CRM/Report/Form/Member/Summary.php @@ -386,8 +386,7 @@ class CRM_Report_Form_Member_Summary extends CRM_Report_Form { " {$this->_rollup} "; } else { - $groupFromSelect = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_membership']}.join_date"); - $this->_groupBy = "GROUP BY {$this->_aliases['civicrm_membership']}.join_date {$groupFromSelect}"; + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, "{$this->_aliases['civicrm_membership']}.join_date"); } } diff --git a/CRM/Report/Form/Pledge/Detail.php b/CRM/Report/Form/Pledge/Detail.php index a318571583..b504d1905b 100644 --- a/CRM/Report/Form/Pledge/Detail.php +++ b/CRM/Report/Form/Pledge/Detail.php @@ -253,8 +253,7 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form { parent::groupBy(); if (empty($this->_groupBy) && $this->_totalPaid) { $groupBy = array("{$this->_aliases['civicrm_pledge']}.id", "{$this->_aliases['civicrm_pledge']}.currency"); - $this->_groupBy = " GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } } diff --git a/CRM/Report/Form/Pledge/Pbnp.php b/CRM/Report/Form/Pledge/Pbnp.php index 43c81746f9..5bbf9d13d6 100644 --- a/CRM/Report/Form/Pledge/Pbnp.php +++ b/CRM/Report/Form/Pledge/Pbnp.php @@ -307,8 +307,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form { "{$this->_aliases['civicrm_pledge']}.id", "{$this->_aliases['civicrm_pledge']}.currency", ); - $this->_groupBy = "GROUP BY " . implode(', ', $groupBy); - $this->_groupBy .= CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); + $this->_groupBy = CRM_Contact_BAO_Query::getGroupByFromSelectColumns($this->_selectClauses, $groupBy); } public function orderBy() { -- 2.25.1