From 95a3882f9e24bd2dd5e46d09095e2fc472c518c7 Mon Sep 17 00:00:00 2001 From: Andrew Hunt Date: Fri, 9 Nov 2018 15:49:39 -0500 Subject: [PATCH] Constituent Detail Report: compose component activities filter once, do it in join --- CRM/Report/Form/Contact/Detail.php | 35 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/CRM/Report/Form/Contact/Detail.php b/CRM/Report/Form/Contact/Detail.php index 7254b40b08..07d19bd9e3 100644 --- a/CRM/Report/Form/Contact/Detail.php +++ b/CRM/Report/Form/Contact/Detail.php @@ -566,8 +566,26 @@ HERESQL; HERESQL; } + // civicrm_contact joins into a single string $contactJoins = implode(PHP_EOL, $contactJoins); + // Now filter out component activities that should be suppressed + $compInfo = CRM_Core_Component::getEnabledComponents(); + $componentsList = []; + foreach ($compInfo as $compObj) { + if ($compObj->info['showActivitiesInCore']) { + $componentsList[] = $compObj->componentID; + } + } + $componentClause = "civicrm_option_value.component_id IS NULL"; + if (!empty($componentsList)) { + $componentsIn = implode(', ', $componentsList); + $componentClause = <<_formComponent['activity_civireport'] = <<_aliases['civicrm_activity']} @@ -575,6 +593,7 @@ HERESQL; $contactJoins JOIN civicrm_option_value ON {$this->_aliases['civicrm_activity']}.activity_type_id = civicrm_option_value.value + AND $componentClause JOIN civicrm_option_group ON civicrm_option_group.id = civicrm_option_value.option_group_id AND civicrm_option_group.name = 'activity_type' @@ -717,21 +736,6 @@ HERESQL; } if (!empty($this->_selectComponent['activity_civireport'])) { - - $componentClause = "civicrm_option_value.component_id IS NULL"; - $componentsIn = NULL; - $compInfo = CRM_Core_Component::getEnabledComponents(); - foreach ($compInfo as $compObj) { - if ($compObj->info['showActivitiesInCore']) { - $componentsIn = $componentsIn ? ($componentsIn . ', ' . - $compObj->componentID) : $compObj->componentID; - } - } - if ($componentsIn) { - $componentClause = "( $componentClause OR - civicrm_option_value.component_id IN ($componentsIn) )"; - } - $val = 'activity_civireport'; $eligibleResult[$val] = $val; @@ -756,7 +760,6 @@ HERESQL; $fromClauses WHERE {$this->_aliases['civicrm_activity']}.is_test = 0 - AND ($componentClause) ) HERESQL; } -- 2.25.1