<?php
/*
+--------------------------------------------------------------------+
- | CiviCRM version 4.5 |
+ | CiviCRM version 4.6 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2014 |
+--------------------------------------------------------------------+
*/
/**
- * Function to create or update case type
+ * create or update case type
*
* @param array $params input parameters
*
*/
function civicrm_api3_case_type_create($params) {
civicrm_api3_verify_mandatory($params, _civicrm_api3_get_DAO(__FUNCTION__));
+ unset($params['is_forkable']); // computed property
+ unset($params['is_forked']); // computed property
if (!array_key_exists('is_active', $params) && empty($params['id'])) {
$params['is_active'] = TRUE;
}
- return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'CaseType');
-
+ if (!empty($params['id']) // this is an existing case-type
+ && !CRM_Case_BAO_CaseType::isForked($params['id']) // which is not yet forked
+ && !CRM_Case_BAO_CaseType::isForkable($params['id']) // for which new forks are prohibited
+ ) {
+ unset($params['definition']);
+ }
+ $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'CaseType');
+ return _civicrm_api3_case_type_get_formatResult($result);
}
/**
- * Function to retrieve case types
+ * retrieve case types
*
- * @param $params
+ * @param array $params
*
* @return array $caseTypes case types keyed by id
* @access public
*/
function civicrm_api3_case_type_get($params) {
- civicrm_api3_verify_mandatory($params);
+ if (!empty($params['options']) && !empty($params['options']['is_count'])) {
+ return _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
+ }
$caseTypes = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params);
-
// format case type, to fetch xml definition
return _civicrm_api3_case_type_get_formatResult($caseTypes);
}
/**
- * Function to format definition
+ * format definition
*
* @param $caseTypes
* @return mixed
*/
function _civicrm_api3_case_type_get_formatResult(&$result) {
foreach ($result['values'] as $key => $caseType) {
- $definition = CRM_Case_BAO_CaseType::getCaseTypeDefinition($caseType);
- $result['values'][$key]['definition'] = $definition;
+ $caseTypeName = (isset($caseType['name'])) ? $caseType['name'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $caseType['id'], 'name', 'id', TRUE);
+ $xml = CRM_Case_XMLRepository::singleton()->retrieve($caseTypeName);
+ if ($xml) {
+ $result['values'][$key]['definition'] = CRM_Case_BAO_CaseType::convertXmlToDefinition($xml);
+ } else {
+ $result['values'][$key]['definition'] = array();
+ }
+ $result['values'][$key]['is_forkable'] = CRM_Case_BAO_CaseType::isForkable($result['values'][$key]['id']);
+ $result['values'][$key]['is_forked'] = CRM_Case_BAO_CaseType::isForked($result['values'][$key]['id']);
}
return $result;
}