/** * @param string $fixtureName * @param string $inputJson * @param string $ignore * @dataProvider definitionProvider */ public function testRoundtrip_JsonToXmlToJson($fixtureName, $inputJson, $ignore) { $tempXml = CRM_Case_BAO_CaseType::convertDefinitionToXML('Housing Support', json_decode($inputJson, TRUE)); $actualDefinition = CRM_Case_BAO_CaseType::convertXmlToDefinition(simplexml_load_string($tempXml)); $expectedDefinition = json_decode($inputJson, TRUE); $this->assertEquals($expectedDefinition, $actualDefinition); }
/** * Attempt to edit the definition of UnforkableCaseType. This fails. */ public function testUnforkable() { $caseTypeId = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', 'UnforkableCaseType', 'id', 'name'); $this->assertTrue(is_numeric($caseTypeId) && $caseTypeId > 0); $this->assertDBNull('CRM_Case_BAO_CaseType', $caseTypeId, 'definition', 'id', "Should not have DB-based definition"); $this->assertFalse(CRM_Case_BAO_CaseType::isForkable($caseTypeId)); $this->assertFalse(CRM_Case_BAO_CaseType::isForked($caseTypeId)); $this->callAPISuccess('CaseType', 'create', array('id' => $caseTypeId, 'definition' => array('activityTypes' => array(array('name' => 'First act'), array('name' => 'Second act'))))); $this->assertFalse(CRM_Case_BAO_CaseType::isForkable($caseTypeId)); $this->assertFalse(CRM_Case_BAO_CaseType::isForked($caseTypeId)); $this->assertDBNull('CRM_Case_BAO_CaseType', $caseTypeId, 'definition', 'id', "Should not have DB-based definition"); }
/** * @param string $caseType * @return SimpleXMLElement|FALSE */ public function retrieveFile($caseType) { $fileName = NULL; $fileXml = NULL; if (CRM_Case_BAO_CaseType::isValidName($caseType)) { // Search for a file based directly on the $caseType name $fileName = $this->findXmlFile($caseType); } // For backward compatibility, also search for double-munged file names // TODO In 4.6 or 5.0, remove support for loading double-munged file names if (!$fileName || !file_exists($fileName)) { $fileName = $this->findXmlFile(CRM_Case_XMLProcessor::mungeCaseType($caseType)); } if ($fileName && file_exists($fileName)) { // read xml file $dom = new DomDocument(); $dom->load($fileName); $dom->xinclude(); $fileXml = simplexml_import_dom($dom); } return $fileXml; }
/** * Format definition. * * @param array $result * * @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); } 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; }
/** * Retrieve DB object based on input parameters. * * It also stores all the retrieved values in the default array. * * @param array $params * (reference ) an assoc array of name/value pairs. * @param array $defaults * (reference ) an assoc array to hold the name / value pairs. * in a hierarchical manner * * @return CRM_Case_BAO_CaseType */ public static function retrieve(&$params, &$defaults) { $caseType = CRM_Case_BAO_CaseType::getValues($params, $defaults); return $caseType; }