bulk comment fixes
[civicrm-core.git] / CRM / Case / Form / Activity / ChangeCaseStatus.php
index 5f5ce3e7575e0522f560aaf98ceedbdfe6b544a7..25a971ef345f9e46f19437ee7367e20930a222fe 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.4                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
  * $Id$
  *
  */
@@ -51,7 +51,9 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
-   * @return None
+   * @param $form
+   *
+   * @return void
    */
   static function setDefaultValues(&$form) {
     $defaults = array();
@@ -66,17 +68,29 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
     $form->removeElement('priority_id');
 
     $form->_caseStatus = CRM_Case_PseudoConstant::caseStatus();
-    $form->_defaultCaseStatus = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $form->_caseId, 'status_id');
 
-    if (!array_key_exists($form->_defaultCaseStatus, $form->_caseStatus)) {
-      $form->_caseStatus[$form->_defaultCaseStatus] = CRM_Core_OptionGroup::getLabel('case_status',
-        $form->_defaultCaseStatus,
-        FALSE
-      );
+    foreach ($form->_caseId as $key => $val) {
+      $form->_oldCaseStatus[] = $form->_defaultCaseStatus[] = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $val, 'status_id');
+    }
+
+    foreach ($form->_defaultCaseStatus as $keydefault => $valdefault) {
+      if (!array_key_exists($valdefault, $form->_caseStatus)) {
+        $form->_caseStatus[$valdefault] = CRM_Core_OptionGroup::getLabel('case_status',
+          $valdefault,
+          FALSE
+        );
+      }
     }
-    $form->add('select', 'case_status_id', ts('Case Status'),
+    $element = $form->add('select', 'case_status_id', ts('Case Status'),
       $form->_caseStatus, TRUE
     );
+    // check if the case status id passed in url is a valid one, set as default and freeze
+    if (CRM_Utils_Request::retrieve('case_status_id', 'Positive', $form)) {
+      $caseStatusId = CRM_Utils_Request::retrieve('case_status_id', 'Positive', $form);
+      $caseStatus = CRM_Case_PseudoConstant::caseStatus();
+      $form->_defaultCaseStatus = array_key_exists($caseStatusId, $caseStatus) ? $caseStatusId : NULL;
+      $element->freeze();
+    }
   }
 
   /**
@@ -84,6 +98,9 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @param array $values posted values of the form
    *
+   * @param $files
+   * @param $form
+   *
    * @return array list of errors to be posted back to the form
    * @static
    * @access public
@@ -97,7 +114,7 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
-   * @return None
+   * @return void
    */
   static function beginPostProcess(&$form, &$params) {
     $params['id'] = CRM_Utils_Array::value('case_id', $params);
@@ -108,15 +125,17 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
-   * @return None
+   * @param $form
+   * @param $params
+   * @param $activity
+   *
+   * @return void
    */
   static function endPostProcess(&$form, &$params, $activity) {
     $groupingValues = CRM_Core_OptionGroup::values('case_status', FALSE, TRUE, FALSE, NULL, 'value');
 
     // Set case end_date if we're closing the case. Clear end_date if we're (re)opening it.
-    if (CRM_Utils_Array::value($params['case_status_id'], $groupingValues) == 'Closed'
-      && CRM_Utils_Array::value('activity_date_time', $params)
-    ) {
+    if (CRM_Utils_Array::value($params['case_status_id'], $groupingValues) == 'Closed' && !empty($params['activity_date_time'])) {
       $params['end_date'] = $params['activity_date_time'];
 
       // End case-specific relationships (roles)
@@ -151,13 +170,15 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
     $params['priority_id'] = CRM_Core_OptionGroup::getValue('priority', 'Normal', 'name');
     $activity->priority_id = $params['priority_id'];
 
-    if ($activity->subject == 'null') {
-      $activity->subject = ts('Case status changed from %1 to %2', array(
-          1 => CRM_Utils_Array::value($form->_defaults['case_status_id'], $form->_caseStatus),
-          2 => CRM_Utils_Array::value($params['case_status_id'], $form->_caseStatus)
-        )
-      );
-      $activity->save();
+    foreach ($form->_oldCaseStatus as $statuskey => $statusval ) {
+      if ($activity->subject == 'null') {
+        $activity->subject = ts('Case status changed from %1 to %2', array(
+            1 => CRM_Utils_Array::value($statusval, $form->_caseStatus),
+            2 => CRM_Utils_Array::value($params['case_status_id'], $form->_caseStatus)
+          )
+        );
+        $activity->save();
+      }
     }
 
     // FIXME: does this do anything ?