diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index e8b15c89657..03c28e46a5e 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1904,30 +1904,26 @@ public static function caseCount($contactId = NULL, $excludeDeleted = TRUE) { } /** - * Retrieve related cases for give case. + * Retrieve related case ids for given case. * - * @param int $mainCaseId - * Id of main case. - * @param int $contactId - * Id of contact. + * @param int $caseId * @param bool $excludeDeleted * Do not include deleted cases. * * @return array */ - public static function getRelatedCases($mainCaseId, $contactId, $excludeDeleted = TRUE) { + public static function getRelatedCaseIds($caseId, $excludeDeleted = TRUE) { //FIXME : do check for permissions. - $relatedCases = array(); - if (!$mainCaseId || !$contactId) { - return $relatedCases; + if (!$caseId) { + return array(); } $linkActType = array_search('Link Cases', CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'name') ); if (!$linkActType) { - return $relatedCases; + return array(); } $whereClause = "mainCase.id = %2"; @@ -1935,7 +1931,6 @@ public static function getRelatedCases($mainCaseId, $contactId, $excludeDeleted $whereClause .= " AND ( relAct.is_deleted = 0 OR relAct.is_deleted IS NULL )"; } - //1. first fetch related case ids. $query = " SELECT relCaseAct.case_id FROM civicrm_case mainCase @@ -1947,7 +1942,7 @@ public static function getRelatedCases($mainCaseId, $contactId, $excludeDeleted $dao = CRM_Core_DAO::executeQuery($query, array( 1 => array($linkActType, 'Integer'), - 2 => array($mainCaseId, 'Integer'), + 2 => array($caseId, 'Integer'), )); $relatedCaseIds = array(); while ($dao->fetch()) { @@ -1955,9 +1950,24 @@ public static function getRelatedCases($mainCaseId, $contactId, $excludeDeleted } $dao->free(); - // there are no related cases. - if (empty($relatedCaseIds)) { - return $relatedCases; + return array_values($relatedCaseIds); + } + + /** + * Retrieve related case details for given case. + * + * @param int $caseId + * @param bool $excludeDeleted + * Do not include deleted cases. + * + * @return array + */ + public static function getRelatedCases($caseId, $excludeDeleted = TRUE) { + $relatedCaseIds = self::getRelatedCaseIds($caseId, $excludeDeleted); + $relatedCases = array(); + + if (!$relatedCaseIds) { + return array(); } $whereClause = 'relCase.id IN ( ' . implode(',', $relatedCaseIds) . ' )'; diff --git a/CRM/Case/Form/Activity/LinkCases.php b/CRM/Case/Form/Activity/LinkCases.php index dc77beb0cf2..466dda292fd 100644 --- a/CRM/Case/Form/Activity/LinkCases.php +++ b/CRM/Case/Form/Activity/LinkCases.php @@ -57,7 +57,7 @@ public static function preProcess(&$form) { // get the related cases for given case. $relatedCases = $form->get('relatedCases'); if (!isset($relatedCases)) { - $relatedCases = CRM_Case_BAO_Case::getRelatedCases($caseId, $form->_currentlyViewedContactId); + $relatedCases = CRM_Case_BAO_Case::getRelatedCases($caseId); $form->set('relatedCases', empty($relatedCases) ? FALSE : $relatedCases); } } diff --git a/CRM/Case/Form/CaseView.php b/CRM/Case/Form/CaseView.php index fac08c11a27..a25e79ae176 100644 --- a/CRM/Case/Form/CaseView.php +++ b/CRM/Case/Form/CaseView.php @@ -58,7 +58,7 @@ public function preProcess() { if (!isset($relatedCases)) { $cId = CRM_Utils_Request::retrieve('cid', 'Integer'); $caseId = CRM_Utils_Request::retrieve('id', 'Integer'); - $relatedCases = CRM_Case_BAO_Case::getRelatedCases($caseId, $cId); + $relatedCases = CRM_Case_BAO_Case::getRelatedCases($caseId); } $this->assign('relatedCases', $relatedCases); $this->assign('showRelatedCases', TRUE); @@ -141,7 +141,7 @@ public function preProcess() { //get the related cases for given case. $relatedCases = $this->get('relatedCases'); if (!isset($relatedCases)) { - $relatedCases = CRM_Case_BAO_Case::getRelatedCases($this->_caseID, $this->_contactID); + $relatedCases = CRM_Case_BAO_Case::getRelatedCases($this->_caseID); $relatedCases = empty($relatedCases) ? FALSE : $relatedCases; $this->set('relatedCases', $relatedCases); }