*/ protected $caseTypeNames; /** * @param CRM_Case_XMLRepository $xmlRepo * @param array $caseTypeNames */ function __construct($xmlRepo, $caseTypeNames) { $this->caseTypeNames = $caseTypeNames; $this->xmlRepo = $xmlRepo; } /** * Run some sanity checks. * * @return array */ public function checkAll() { $messages = array_merge( $this->checkCaseTypeNameConsistency() ); return $messages; } /** * Check that the case-type names don't rely on double-munging. * * @return array an empty array, or a list of warnings */ public function checkCaseTypeNameConsistency() { $messages = array(); foreach ($this->caseTypeNames as $caseTypeName) { $normalFile = $this->xmlRepo->findXmlFile($caseTypeName); $mungedFile = $this->xmlRepo->findXmlFile(CRM_Case_XMLProcessor::mungeCaseType($caseTypeName)); if ($normalFile && $mungedFile && $normalFile == $mungedFile) { // ok } elseif ($normalFile && $mungedFile) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, ts('Case type "%2" has duplicate XML files ("%3" and "%4").
Read more about this warning', array( 1 => CRM_Utils_System::getWikiBaseURL() . __FUNCTION__, 2 => $caseTypeName, 3 => $normalFile, 4 => $mungedFile, )), ts('CiviCase') ); } elseif ($normalFile && !$mungedFile) { // ok } elseif (!$normalFile && $mungedFile) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, ts('Case type "%2" corresponds to XML file ("%3") The XML file should be named "%4".
Read more about this warning', array( 1 => CRM_Utils_System::getWikiBaseURL() . __FUNCTION__, 2 => $caseTypeName, 3 => $mungedFile, 4 => "{$caseTypeName}.xml", )), ts('CiviCase') ); } elseif (!$normalFile && !$mungedFile) { // ok -- probably a new or DB-based CaseType } } return $messages; } }