From 10b0bbeed70b737442de21ab67f0616ca38b37c7 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Mon, 2 Jun 2014 19:07:04 -0700 Subject: [PATCH] CRM-14476 - CRM_Case_BAO_CaseType - Make XML<=>Array conversions easier to test --- CRM/Case/BAO/CaseType.php | 32 +++++++++++++++----------------- api/v3/CaseType.php | 4 +++- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/CRM/Case/BAO/CaseType.php b/CRM/Case/BAO/CaseType.php index 2723b812f5..21a3f1e987 100644 --- a/CRM/Case/BAO/CaseType.php +++ b/CRM/Case/BAO/CaseType.php @@ -72,7 +72,7 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { } // function to format definition column - self::convertDefinitionToXML($params); + $params['definition'] = self::convertDefinitionToXML($params['name'], $params['definition']); $caseTypeDAO->copyValues($params); return $caseTypeDAO->save(); @@ -81,19 +81,19 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { /** * Function to format / convert submitted array to xml for case type definition * - * @param $params associated array of submitted values - * - * @return void + * @param string $name + * @param array $definition the case-type defintion expressed as an array-tree + * @return string XML * @static * @access public */ - static function convertDefinitionToXML(&$params) { + static function convertDefinitionToXML($name, $definition) { $xmlFile = '' . "\n\n\n"; - $xmlFile .= "{$params['name']}\n"; + $xmlFile .= "{$name}\n"; - if (!empty($params['definition']['activityTypes'])) { + if (!empty($definition['activityTypes'])) { $xmlFile .= "\n"; - foreach ($params['definition']['activityTypes'] as $values) { + foreach ($definition['activityTypes'] as $values) { $xmlFile .= "\n"; foreach ($values as $key => $value) { $xmlFile .= "<{$key}>{$value}\n"; @@ -103,9 +103,9 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { $xmlFile .= "\n"; } - if (!empty($params['definition']['activitySets'])) { + if (!empty($definition['activitySets'])) { $xmlFile .= "\n"; - foreach ($params['definition']['activitySets'] as $k => $val) { + foreach ($definition['activitySets'] as $k => $val) { $xmlFile .= "\n"; foreach ($val as $index => $setVal) { if ($index == 'activityTypes') { @@ -132,9 +132,9 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { $xmlFile .= "\n"; } - if (!empty($params['definition']['caseRoles'])) { + if (!empty($definition['caseRoles'])) { $xmlFile .= "\n"; - foreach ($params['definition']['caseRoles'] as $values) { + foreach ($definition['caseRoles'] as $values) { $xmlFile .= "\n"; foreach ($values as $key => $value) { $xmlFile .= "<{$key}>{$value}\n"; @@ -145,20 +145,18 @@ class CRM_Case_BAO_CaseType extends CRM_Case_DAO_CaseType { } $xmlFile .= ''; - $params['definition'] = $xmlFile; + return $xmlFile; } /** * Function to get the case definition either from db or read from xml file * - * @param $caseType a single case-type record + * @param SimpleXmlElement $xml a single case-type record * * @return array the definition of the case-type, expressed as PHP array-tree * @static */ - static function getCaseTypeDefinition($caseType) { - $xml = CRM_Case_XMLRepository::singleton()->retrieve($caseType['name']); - + static function convertXmlToDefinition($xml) { // build PHP array based on definition $definition = array(); diff --git a/api/v3/CaseType.php b/api/v3/CaseType.php index 3182a60800..ed2aa8c0b6 100644 --- a/api/v3/CaseType.php +++ b/api/v3/CaseType.php @@ -83,7 +83,9 @@ function civicrm_api3_case_type_get($params) { */ function _civicrm_api3_case_type_get_formatResult(&$result) { foreach ($result['values'] as $key => $caseType) { - $definition = CRM_Case_BAO_CaseType::getCaseTypeDefinition($caseType); + $definition = CRM_Case_BAO_CaseType::convertXmlToDefinition( + CRM_Case_XMLRepository::singleton()->retrieve($caseType['name']) + ); $result['values'][$key]['definition'] = $definition; } return $result; -- 2.25.1