Merge pull request #21235 from seamuslee001/dev_core_2768
[civicrm-core.git] / api / v3 / CaseType.php
index 9cdcbc8a00e2e65aac6545c9355e18b29802944e..3caa7fba6d3a06f2d4e637851d88600e7559542c 100644 (file)
  */
 function civicrm_api3_case_type_create($params) {
   civicrm_api3_verify_mandatory($params, _civicrm_api3_get_DAO(__FUNCTION__));
-  // Computed properties.
-  unset($params['is_forkable']);
-  unset($params['is_forked']);
 
-  if (!array_key_exists('is_active', $params) && empty($params['id'])) {
-    $params['is_active'] = TRUE;
-  }
-  // This is an existing case-type.
-  if (!empty($params['id']) && isset($params['definition'])
-    // which is not yet forked
-    && !CRM_Case_BAO_CaseType::isForked($params['id'])
-    // for which new forks are prohibited
-    && !CRM_Case_BAO_CaseType::isForkable($params['id'])
-  ) {
-    unset($params['definition']);
-  }
   $result = _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'CaseType');
   return _civicrm_api3_case_type_get_formatResult($result);
 }
@@ -76,16 +61,9 @@ function civicrm_api3_case_type_get($params) {
  */
 function _civicrm_api3_case_type_get_formatResult(&$result, $options = []) {
   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) : [];
-    }
-    else {
-      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) : [];
-      }
+    if (!empty($caseType['definition']) || empty($options['return']) || !empty($options['return']['definition'])) {
+      $caseType += ['definition' => NULL];
+      CRM_Case_BAO_CaseType::formatOutputDefinition($caseType['definition'], $caseType);
     }
     $caseType['is_forkable'] = CRM_Case_BAO_CaseType::isForkable($caseType['id']);
     $caseType['is_forked'] = CRM_Case_BAO_CaseType::isForked($caseType['id']);