CRM-15002 - Link Cases - Fix fatal error
authorTim Otten <totten@civicrm.org>
Thu, 17 Jul 2014 22:47:19 +0000 (15:47 -0700)
committerTim Otten <totten@civicrm.org>
Thu, 17 Jul 2014 22:47:19 +0000 (15:47 -0700)
CRM/Case/Form/Activity/LinkCases.php
CRM/Utils/Array.php

index f0a6fd9deea919b6f35c9e32e3ed52d3c1b36a57..bf7902ddd5df42688dd3cdcf471adfca054b6368 100644 (file)
@@ -47,17 +47,22 @@ class CRM_Case_Form_Activity_LinkCases {
     if (!isset($form->_caseId)) {
       CRM_Core_Error::fatal(ts('Case Id not found.'));
     }
+    if (count($form->_caseId) != 1) {
+      CRM_Core_Resources::fatal(ts('Expected one case-type'));
+    }
+
+    $caseId = CRM_Utils_Array::first($form->_caseId);
 
     $form->assign('clientID', $form->_currentlyViewedContactId);
-    $form->assign('caseTypeLabel', CRM_Case_BAO_Case::getCaseType($form->_caseId));
+    $form->assign('caseTypeLabel', CRM_Case_BAO_Case::getCaseType($caseId));
 
     // get the related cases for given case.
     $relatedCases = $form->get('relatedCases');
     if (!isset($relatedCases)) {
-      $relatedCases = CRM_Case_BAO_Case::getRelatedCases($form->_caseId, $form->_currentlyViewedContactId);
+      $relatedCases = CRM_Case_BAO_Case::getRelatedCases($caseId, $form->_currentlyViewedContactId);
       $form->set('relatedCases', empty($relatedCases) ? FALSE : $relatedCases);
     }
-    $excludeCaseIds = array($form->_caseId);
+    $excludeCaseIds = array($caseId);
     if (is_array($relatedCases) && !empty($relatedCases)) {
       $excludeCaseIds = array_merge($excludeCaseIds, array_keys($relatedCases));
     }
@@ -101,7 +106,8 @@ class CRM_Case_Form_Activity_LinkCases {
     $errors = array();
 
     $linkCaseId = CRM_Utils_Array::value('link_to_case_id', $values);
-    if ($linkCaseId == $form->_caseId) {
+    assert('is_numeric($linkeCaseId)');
+    if ($linkCaseId == CRM_Utils_Array::first($form->_caseId)) {
       $errors['link_to_case'] = ts('Please select some other case to link.');
     }
 
index 34b18aba5f35058ad54a5bcb478c379a34c56159..39d2245aadfbd3976c15cd5ac7e17df633b272c2 100644 (file)
@@ -943,5 +943,18 @@ class CRM_Utils_Array {
 
     return $results;
   }
+
+  /**
+   * Get the first elemnet of an array
+   *
+   * @param array $array
+   * @return mixed|NULL
+   */
+  static function first($array) {
+    foreach ($array as $value) {
+      return $value;
+    }
+    return NULL;
+  }
 }