X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=CRM%2FCase%2FForm%2FActivity%2FChangeCaseStatus.php;h=d08c1f86f3db7316db820d7af0709021413c3d9c;hb=fd31fa4c65b766d62df21f578772960955322576;hp=e39601b05cc99ef12b6faca02b09b822ac516eea;hpb=a055fd3bcb8341e6a9c25e32432cf4f4776a2781;p=civicrm-core.git diff --git a/CRM/Case/Form/Activity/ChangeCaseStatus.php b/CRM/Case/Form/Activity/ChangeCaseStatus.php index e39601b05c..d08c1f86f3 100644 --- a/CRM/Case/Form/Activity/ChangeCaseStatus.php +++ b/CRM/Case/Form/Activity/ChangeCaseStatus.php @@ -1,9 +1,9 @@ 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'); } - $form->add('select', 'case_status_id', ts('Case Status'), + + 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 ); + // 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,6 +114,9 @@ class CRM_Case_Form_Activity_ChangeCaseStatus { * * @access public * + * @param $form + * @param $params + * * @return void */ static function beginPostProcess(&$form, &$params) { @@ -108,15 +128,17 @@ class CRM_Case_Form_Activity_ChangeCaseStatus { * * @access public * + * @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 +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 ?