From d5bea1e32905d6495624e41bb71152e737a61d84 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Thu, 30 Jul 2015 11:16:22 -0400 Subject: [PATCH] CRM-14136 - Don't show deleted contacts on case dashboard --- CRM/Case/BAO/Case.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 1c5c8db679..59b90c924a 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -740,7 +740,7 @@ LEFT JOIN civicrm_option_group aog ON aog.name='activity_type' $allCases = FALSE; } - $condition = " AND civicrm_case.is_deleted = 0 "; + $condition = " AND civicrm_case.is_deleted = 0 AND civicrm_contact.is_deleted <> 1"; if (!$allCases) { $condition .= " AND case_relationship.contact_id_b = {$userID} "; @@ -917,6 +917,7 @@ AND civicrm_case.status_id != $closedId"; $userID = 'null'; $all = 1; $case_owner = 1; + $myGroupByClause = ' GROUP BY civicrm_case.id'; } else { $all = 0; @@ -925,17 +926,19 @@ AND civicrm_case.status_id != $closedId"; $myGroupByClause = " GROUP BY CONCAT(case_relationship.case_id,'-',case_relationship.contact_id_b)"; } + // FIXME: This query could be a lot more efficient if it used COUNT() instead of returning all rows and then counting them with php $query = " SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS case_type, case_type_id, case_relationship.contact_id_b FROM civicrm_case + INNER JOIN civicrm_case_contact cc on cc.case_id = civicrm_case.id LEFT JOIN civicrm_case_type ON civicrm_case.case_type_id = civicrm_case_type.id LEFT JOIN civicrm_option_group option_group_case_status ON ( option_group_case_status.name = 'case_status' ) LEFT JOIN civicrm_option_value case_status ON ( civicrm_case.status_id = case_status.value AND option_group_case_status.id = case_status.option_group_id ) LEFT JOIN civicrm_relationship case_relationship ON ( case_relationship.case_id = civicrm_case.id AND case_relationship.contact_id_b = {$userID}) - WHERE is_deleted =0 + WHERE is_deleted = 0 AND cc.contact_id IN (SELECT id FROM civicrm_contact WHERE is_deleted <> 1) {$myCaseWhereClause} {$myGroupByClause}"; $res = CRM_Core_DAO::executeQuery($query, CRM_Core_DAO::$_nullArray); -- 2.25.1