From d4ed464632db5df8b043932878ca3235f1900e70 Mon Sep 17 00:00:00 2001 From: Edsel Date: Wed, 20 May 2015 18:20:50 +0530 Subject: [PATCH] ICM-1 Fixed reports to use temporary table approach --- CRM/Report/Form.php | 17 +++++++++++++++++ CRM/Report/Form/Contribute/Lybunt.php | 15 ++------------- CRM/Report/Form/Contribute/Sybunt.php | 10 +++------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/CRM/Report/Form.php b/CRM/Report/Form.php index b8650ba7f4..e52f91beed 100644 --- a/CRM/Report/Form.php +++ b/CRM/Report/Form.php @@ -4493,4 +4493,21 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a ); } + + public function getPermissionedFTQuery(&$query) { + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); + + $sql = "CREATE TEMPORARY TABLE civicrm_contribution_temp AS SELECT {$query->_aliases['civicrm_contribution']}.id {$query->_from} + INNER JOIN civicrm_line_item {$query->_aliases['civicrm_line_item']} + ON {$query->_aliases['civicrm_contribution']}.id = {$query->_aliases['civicrm_line_item']}.contribution_id AND + {$query->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution' + {$query->_where} + AND {$query->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + AND {$query->_aliases['civicrm_line_item']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") + GROUP BY {$query->_aliases['civicrm_contribution']}.id"; + CRM_Core_DAO::executeQuery($sql); + $query->_from .= " + INNER JOIN civicrm_contribution_temp temp ON {$query->_aliases['civicrm_contribution']}.id = temp.id "; + } + } diff --git a/CRM/Report/Form/Contribute/Lybunt.php b/CRM/Report/Form/Contribute/Lybunt.php index d0111aea8b..62227a7c13 100644 --- a/CRM/Report/Form/Contribute/Lybunt.php +++ b/CRM/Report/Form/Contribute/Lybunt.php @@ -429,19 +429,8 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form { $this->from(); $this->where(); $this->groupBy(); - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); - - $sql = "CREATE TEMPORARY TABLE civicrm_contribution_temp AS SELECT {$this->_aliases['civicrm_contribution']}.id {$this->_from} - INNER JOIN civicrm_line_item {$this->_aliases['civicrm_line_item']} - ON {$this->_aliases['civicrm_contribution']}.id = {$this->_aliases['civicrm_line_item']}.contribution_id AND - {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution' - {$this->_where} - AND {$this->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") - AND {$this->_aliases['civicrm_line_item']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ") - GROUP BY {$this->_aliases['civicrm_contribution']}.id"; - CRM_Core_DAO::executeQuery($sql); - $this->_from .= " - INNER JOIN civicrm_contribution_temp temp ON {$this->_aliases['civicrm_contribution']}.id = temp.id "; + + $this->getPermissionedFTQuery($this); $rows = $this->_contactIds = array(); $this->limit(); diff --git a/CRM/Report/Form/Contribute/Sybunt.php b/CRM/Report/Form/Contribute/Sybunt.php index acbf05f7cb..8048ce68e4 100644 --- a/CRM/Report/Form/Contribute/Sybunt.php +++ b/CRM/Report/Form/Contribute/Sybunt.php @@ -319,10 +319,7 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { FROM civicrm_contribution {$this->_aliases['civicrm_contribution']} INNER JOIN civicrm_contact {$this->_aliases['civicrm_contact']} ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id - {$this->_aclFrom} - LEFT JOIN civicrm_line_item {$this->_aliases['civicrm_line_item']} - ON {$this->_aliases['civicrm_contribution']}.id = {$this->_aliases['civicrm_line_item']}.contribution_id AND - {$this->_aliases['civicrm_line_item']}.entity_table = 'civicrm_contribution'"; + {$this->_aclFrom}"; if ($this->isTableSelected('civicrm_email')) { $this->_from .= " @@ -392,9 +389,6 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { if ($this->_aclWhere) { $this->_where .= " AND {$this->_aclWhere} "; } - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes); - $this->_where .= " AND {$this->_aliases['civicrm_contribution']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; - $this->_where .= " AND {$this->_aliases['civicrm_line_item']}.financial_type_id IN (" . implode(',' , array_keys($financialTypes)) . ")"; } public function groupBy() { @@ -440,6 +434,8 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { $this->where(); $this->groupBy(); + $this->getPermissionedFTQuery($this); + $rows = $contactIds = array(); if (empty($this->_params['charts'])) { $this->limit(); -- 2.25.1