/** * @param string $caseType * @return SimpleXMLElement|FALSE */ public function retrieve($caseType) { // check if xml definition is defined in db $definition = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseType', $caseType, 'definition', 'name'); if (!empty($definition)) { list($xml, $error) = CRM_Utils_XML::parseString($definition); if (!$xml) { throw new CRM_Core_Exception("Failed to parse CaseType XML: {$error}"); } return $xml; } // TODO In 4.6 or 5.0, remove support for weird machine-names //if (!CRM_Case_BAO_CaseType::isValidName($caseType)) { // // perhaps caller provider a the label instead of the name? // throw new CRM_Core_Exception("Cannot load caseType with malformed name [$caseType]"); //} if (!CRM_Utils_Array::value($caseType, $this->xml)) { $fileXml = $this->retrieveFile($caseType); if ($fileXml) { $this->xml[$caseType] = $fileXml; } else { return FALSE; } } return $this->xml[$caseType]; }
/** * Load extension info a string. * * @param string $string * XML content. * * @throws CRM_Extension_Exception_ParseException * @return CRM_Extension_Info */ public static function loadFromString($string) { list($xml, $error) = CRM_Utils_XML::parseString($string); if ($xml === FALSE) { throw new CRM_Extension_Exception_ParseException("Failed to parse info XML: {$string}"); } $instance = new CRM_Extension_Info(); $instance->parse($xml); return $instance; }