/** * Takes an associative array and creates a Case Type object. * * the function extract all the params it needs to initialize the create a * case type object. the params array could contain additional unused name/value * pairs * * @param array $params * (reference ) an assoc array of name/value pairs. * * @throws CRM_Core_Exception * * @return CRM_Case_BAO_CaseType */ public static function add(&$params) { $caseTypeDAO = new CRM_Case_DAO_CaseType(); // form the name only if missing: CRM-627 $nameParam = CRM_Utils_Array::value('name', $params, NULL); if (!$nameParam && empty($params['id'])) { $params['name'] = CRM_Utils_String::titleToVar($params['title']); } // Old case-types (pre-4.5) may keep their ucky names, but new case-types must satisfy isValidName() if (empty($params['id']) && !empty($params['name']) && !CRM_Case_BAO_CaseType::isValidName($params['name'])) { throw new CRM_Core_Exception("Cannot create new case-type with malformed name [{$params['name']}]"); } $caseTypeName = isset($params['name']) ? $params['name'] : CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $params['id'], 'name', 'id', TRUE); // function to format definition column if (isset($params['definition']) && is_array($params['definition'])) { $params['definition'] = self::convertDefinitionToXML($caseTypeName, $params['definition']); CRM_Core_ManagedEntities::scheduleReconciliation(); } $caseTypeDAO->copyValues($params); return $caseTypeDAO->save(); }
/** * @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; }