bulk comment fix
[civicrm-core.git] / CRM / Case / Form / Activity / ChangeCaseStatus.php
index 09f31ebac69e3323b68dd9285f58e0b6d88c3e2c..d08c1f86f3db7316db820d7af0709021413c3d9c 100644 (file)
@@ -51,6 +51,8 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
+   * @param $form
+   *
    * @return void
    */
   static function setDefaultValues(&$form) {
@@ -66,13 +68,18 @@ 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
+        );
+      }
     }
     $element = $form->add('select', 'case_status_id', ts('Case Status'),
       $form->_caseStatus, TRUE
@@ -91,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
@@ -104,6 +114,9 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
+   * @param $form
+   * @param $params
+   *
    * @return void
    */
   static function beginPostProcess(&$form, &$params) {
@@ -115,6 +128,10 @@ class CRM_Case_Form_Activity_ChangeCaseStatus {
    *
    * @access public
    *
+   * @param $form
+   * @param $params
+   * @param $activity
+   *
    * @return void
    */
   static function endPostProcess(&$form, &$params, $activity) {
@@ -156,13 +173,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 ?