From f5911ac41443fe43da043f3d49fc69de0cb552b0 Mon Sep 17 00:00:00 2001 From: Jaap Jansma <jaap@edeveloper.nl> Date: Tue, 27 Sep 2016 15:50:23 +0200 Subject: [PATCH] update case type condition was not compatible with civi 4.4 --- .../Case/Form/SetDateField.php | 3 +-- .../Case/SetDateFieldOnCase.php | 11 ++++---- CRM/CivirulesConditions/Case/CaseType.php | 27 +++++++++++++++---- .../Form/Case/CaseType.php | 7 +---- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/CRM/CivirulesActions/Case/Form/SetDateField.php b/CRM/CivirulesActions/Case/Form/SetDateField.php index 27b1168..6093f5c 100644 --- a/CRM/CivirulesActions/Case/Form/SetDateField.php +++ b/CRM/CivirulesActions/Case/Form/SetDateField.php @@ -35,12 +35,11 @@ class CRM_CivirulesActions_Case_Form_SetDateField extends CRM_CivirulesActions_F */ public function setDefaultValues() { $defaultValues = parent::setDefaultValues(); - + $data = unserialize($this->ruleAction->action_params); if (!empty($data['field'])) { $defaultValues['field'] = $data['field']; } - $data = unserialize($this->ruleAction->action_params); foreach(CRM_Civirules_Delay_Factory::getAllDelayClasses() as $delay_class) { $delay_class->setDefaultValues($defaultValues, 'date', $this->rule); } diff --git a/CRM/CivirulesActions/Case/SetDateFieldOnCase.php b/CRM/CivirulesActions/Case/SetDateFieldOnCase.php index dc07d7b..61f60a6 100644 --- a/CRM/CivirulesActions/Case/SetDateFieldOnCase.php +++ b/CRM/CivirulesActions/Case/SetDateFieldOnCase.php @@ -29,15 +29,16 @@ class CRM_CivirulesActions_Case_SetDateFieldOnCase extends CRM_Civirules_Action if ($isCustomField) { if ($date instanceof DateTime) { - $params[$field] = $date->format('Ymd His'); + $params[$field] = $date->format('Ymd'); $params['entity_id'] = $case['id']; - civicrm_api('CustomValue', 'create', $params); + civicrm_api3('CustomValue', 'create', $params); } - } else { + } + else { if ($date instanceof DateTime) { - $params[$field] = $date->format('Ymd His'); + $params[$field] = $date->format('Ymd'); $params['id'] = $case['id']; - civicrm_api('Case', 'create', $params); + civicrm_api3('Case', 'create', $params); } } } diff --git a/CRM/CivirulesConditions/Case/CaseType.php b/CRM/CivirulesConditions/Case/CaseType.php index 98a7ba4..a2b1655 100644 --- a/CRM/CivirulesConditions/Case/CaseType.php +++ b/CRM/CivirulesConditions/Case/CaseType.php @@ -66,7 +66,7 @@ class CRM_CivirulesConditions_Case_CaseType extends CRM_Civirules_Condition { */ public function userFriendlyConditionParams() { try { - $caseTypes = civicrm_api3('CaseType', 'Get', array('is_active' => 1)); + $caseTypes = self::getCaseTypes(); $operator = null; if ($this->conditionParams['operator'] == 0) { $operator = 'equals'; @@ -74,15 +74,32 @@ class CRM_CivirulesConditions_Case_CaseType extends CRM_Civirules_Condition { if ($this->conditionParams['operator'] == 1) { $operator = 'is not equal to'; } - foreach ($caseTypes['values'] as $caseType) { - if ($caseType['id'] == $this->conditionParams['case_type_id']) { - return "Case Type ".$operator." ".$caseType['title']; - } + $case_type_id = $this->conditionParams['case_type_id']; + if (isset($caseTypes[$case_type_id])) { + return "Case Type ".$operator." ".$caseTypes[$case_type_id]; } } catch (CiviCRM_API3_Exception $ex) {} return ''; } + public static function getCaseTypes() { + $return = array(); + $version = CRM_Core_BAO_Domain::version(); + if (version_compare($version, '4.5', '<')) { + $option_group_id = civicrm_api3('OptionGroup', 'getvalue', array('return' => 'id', 'name' => 'case_type')); + $caseTypes = civicrm_api3('OptionValue', 'Get', array('option_group_id' => $option_group_id)); + foreach ($caseTypes['values'] as $caseType) { + $return[$caseType['value']] = $caseType['label']; + } + } else { + $caseTypes = civicrm_api3('CaseType', 'Get', array('is_active' => 1)); + foreach ($caseTypes['values'] as $caseType) { + $return[$caseType['id']] = $caseType['title']; + } + } + return $return; + } + /** * Returns an array with required entity names * diff --git a/CRM/CivirulesConditions/Form/Case/CaseType.php b/CRM/CivirulesConditions/Form/Case/CaseType.php index d4b9f66..edfb5a5 100644 --- a/CRM/CivirulesConditions/Form/Case/CaseType.php +++ b/CRM/CivirulesConditions/Form/Case/CaseType.php @@ -4,12 +4,7 @@ class CRM_CivirulesConditions_Form_Case_CaseType extends CRM_CivirulesConditions_Form_Form { protected function getCaseTypes() { - $caseTypes = civicrm_api3('CaseType', 'Get', array('is_active' => 1)); - $return = array(); - foreach($caseTypes['values'] as $caseType) { - $return[$caseType['id']] = $caseType['title']; - } - return $return; + return CRM_CivirulesConditions_Case_CaseType::getCaseTypes(); } /** -- GitLab