X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FCaseType.php;h=36b011e3255b597685926202619be377dd12e313;hb=f1fd93f66b0c4125a0c8afef5258caee355c7e29;hp=3598412fce6eeb31da4fb9a44d5d07110824e4e2;hpb=1bf0c1aee7763286d31559d4719239fea7383f0e;p=civicrm-core.git diff --git a/api/v3/CaseType.php b/api/v3/CaseType.php index 3598412fce..36b011e325 100644 --- a/api/v3/CaseType.php +++ b/api/v3/CaseType.php @@ -3,7 +3,7 @@ +--------------------------------------------------------------------+ | CiviCRM version 4.7 | +--------------------------------------------------------------------+ - | Copyright CiviCRM LLC (c) 2004-2016 | + | Copyright CiviCRM LLC (c) 2004-2017 | +--------------------------------------------------------------------+ | This file is a part of CiviCRM. | | | @@ -51,7 +51,7 @@ function civicrm_api3_case_type_create($params) { $params['is_active'] = TRUE; } // This is an existing case-type. - if (!empty($params['id']) + if (!empty($params['id']) && isset($params['definition']) && !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 ) { @@ -75,29 +75,34 @@ function civicrm_api3_case_type_get($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); + $options = _civicrm_api3_get_options_from_params($params); + return _civicrm_api3_case_type_get_formatResult($caseTypes, $options); } /** * Format definition. * * @param array $result + * @param array $options * * @return array * @throws \CRM_Core_Exception */ -function _civicrm_api3_case_type_get_formatResult(&$result) { - foreach ($result['values'] as $key => $caseType) { - $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); +function _civicrm_api3_case_type_get_formatResult(&$result, $options = array()) { + foreach ($result['values'] as $key => &$caseType) { + if (!empty($caseType['definition'])) { + list($xml) = CRM_Utils_XML::parseString($caseType['definition']); + $caseType['definition'] = $xml ? CRM_Case_BAO_CaseType::convertXmlToDefinition($xml) : array(); } else { - $result['values'][$key]['definition'] = array(); + if (empty($options['return']) || !empty($options['return']['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); + $caseType['definition'] = $xml ? CRM_Case_BAO_CaseType::convertXmlToDefinition($xml) : 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']); + $caseType['is_forkable'] = CRM_Case_BAO_CaseType::isForkable($caseType['id']); + $caseType['is_forked'] = CRM_Case_BAO_CaseType::isForked($caseType['id']); } return $result; }