From 6e19e2eadcf7a42e822d6adf1913dc6c4d9cf175 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 1 May 2017 14:36:29 -0400 Subject: [PATCH] CRM-20097 - Break large function in half The smaller getRelatedCaseIds() is used by the civicase extension's getdetails api action. --- CRM/Case/BAO/Case.php | 40 +++++++++++++++++----------- CRM/Case/Form/Activity/LinkCases.php | 2 +- CRM/Case/Form/CaseView.php | 4 +-- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index e8b15c8965..03c28e46a5 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -1904,30 +1904,26 @@ SELECT civicrm_contact.id as casemanager_id, } /** - * 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 @@ SELECT civicrm_contact.id as casemanager_id, $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 @@ SELECT civicrm_contact.id as casemanager_id, $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 @@ SELECT civicrm_contact.id as casemanager_id, } $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 dc77beb0cf..466dda292f 100644 --- a/CRM/Case/Form/Activity/LinkCases.php +++ b/CRM/Case/Form/Activity/LinkCases.php @@ -57,7 +57,7 @@ class CRM_Case_Form_Activity_LinkCases { // 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 fac08c11a2..a25e79ae17 100644 --- a/CRM/Case/Form/CaseView.php +++ b/CRM/Case/Form/CaseView.php @@ -58,7 +58,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { 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 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { //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); } -- 2.25.1