diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 7e1b83667a84..38cf7c48af8d 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -588,11 +588,16 @@ public static function getCases($allCases = TRUE, $params = array(), $context = $condition = NULL; $casesList = array(); - //validate access for own cases. + // validate access for own cases. if (!self::accessCiviCase()) { return $getCount ? 0 : $casesList; } + // Return cached value instead of re-running query + if (isset(Civi::$statics[__CLASS__]['totalCount']) && $getCount) { + return Civi::$statics[__CLASS__]['totalCount']; + } + $type = CRM_Utils_Array::value('type', $params, 'upcoming'); $userID = CRM_Core_Session::singleton()->get('userID'); @@ -610,7 +615,7 @@ public static function getCases($allCases = TRUE, $params = array(), $context = $caseActivityIDColumn = 'case_recent_activity_id'; } - //validate access for all cases. + // validate access for all cases. if ($allCases && !CRM_Core_Permission::check('access all cases and activities')) { $allCases = FALSE; } @@ -631,7 +636,7 @@ public static function getCases($allCases = TRUE, $params = array(), $context = } $condition = implode(' AND ', $whereClauses); - $totalCount = CRM_Core_DAO::singleValueQuery(self::getCaseActivityCountQuery($type, $userID, $condition)); + Civi::$statics[__CLASS__]['totalCount'] = $totalCount = CRM_Core_DAO::singleValueQuery(self::getCaseActivityCountQuery($type, $userID, $condition)); if ($getCount) { return $totalCount; }