<?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. |
| |
/**
*
* @package CRM
- * @copyright CiviCRM LLC (c) 2004-2013
+ * @copyright CiviCRM LLC (c) 2004-2014
* $Id$
*
*/
*
* @access public
*
- * @return None
+ * @param $form
+ *
+ * @return void
*/
static function setDefaultValues(&$form) {
$defaults = array();
$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();
+ }
}
/**
*
* @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
*
* @access public
*
- * @return None
+ * @return void
*/
static function beginPostProcess(&$form, &$params) {
$params['id'] = CRM_Utils_Array::value('case_id', $params);
*
* @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)
$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 ?