X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCase%2FXMLProcessor.php;h=eecedd51d6e6a0fc2624fcf7c7c1a4181cbddb0e;hb=442df34b5f4c02d27af8d51f657deff0e00f240c;hp=c22f4e8aa7c838c6b5a510303467945e5867d2cd;hpb=912a3736c0c169f3d27d9de8495a28983ba9bf4c;p=civicrm-core.git diff --git a/CRM/Case/XMLProcessor.php b/CRM/Case/XMLProcessor.php index c22f4e8aa7..eecedd51d6 100644 --- a/CRM/Case/XMLProcessor.php +++ b/CRM/Case/XMLProcessor.php @@ -36,10 +36,10 @@ class CRM_Case_XMLProcessor { static protected $_xml; + static protected $_hookCache = NULL; + function retrieve($caseType) { - // trim all spaces from $caseType - $caseType = str_replace('_', ' ', $caseType); - $caseType = CRM_Utils_String::munge(ucwords($caseType), '', 0); + $caseType = self::mungeCaseType($caseType); if (!CRM_Utils_Array::value($caseType, self::$_xml)) { if (!self::$_xml) { @@ -87,6 +87,17 @@ class CRM_Case_XMLProcessor { ) ); } + + if (!file_exists($fileName)) { + if (self::$_hookCache === NULL) { + self::$_hookCache = array(); + CRM_Utils_Hook::caseTypes(self::$_hookCache); + } + if (isset(self::$_hookCache[$caseType], self::$_hookCache[$caseType]['file'])) { + $fileName = self::$_hookCache[$caseType]['file']; + } + } + if (!file_exists($fileName)) { return FALSE; } @@ -101,6 +112,13 @@ class CRM_Case_XMLProcessor { return self::$_xml[$caseType]; } + public static function mungeCaseType($caseType) { + // trim all spaces from $caseType + $caseType = str_replace('_', ' ', $caseType); + $caseType = CRM_Utils_String::munge(ucwords($caseType), '', 0); + return $caseType; + } + function &allActivityTypes($indexName = TRUE, $all = FALSE) { static $activityTypes = NULL; if (!$activityTypes) {