- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/checklist.php
- Класс: CAutoCheck
- Вызов: CAutoCheck::CheckTemplates
static function CheckTemplates()
{
$arFolders = array(
$_SERVER['DOCUMENT_ROOT']."/bitrix/templates",
$_SERVER['DOCUMENT_ROOT']."/local/templates",
);
$arResult["STATUS"] = false;
$arCount = 0;
$arRequireFiles = array("header.php", "footer.php");
$arFilter = array(".svn", ".", "..");
$arMessage = '';
foreach($arFolders as $folder)
{
if (file_exists($folder) && ($arTemplates = scandir($folder)))
{
foreach ($arTemplates as $dir)
{
$arTemplateFolder = $folder."/".$dir;
if (in_array($dir, $arFilter) || !is_dir($arTemplateFolder))
continue;
$arRequireFilesTmp = $arRequireFiles;
foreach($arRequireFilesTmp as $k => $file)
{
if (!file_exists($arTemplateFolder."/".$file))
{
$arMessage .= GetMessage("NOT_FOUND_FILE", array("#template#" => $dir, "#file_name#" => $file))."n";
unset($arRequireFilesTmp[$k]);
}
}
if (in_array("header.php", $arRequireFilesTmp))
{
if($f = fopen($arTemplateFolder."/header.php", "r"))
{
$arHeader = fread($f, filesize($arTemplateFolder."/header.php"));
preg_match('/$APPLICATION->ShowHead(/im', $arHeader, $arShowHead);
preg_match('/$APPLICATION->ShowTitle(/im', $arHeader, $arShowTitle);
preg_match('/$APPLICATION->ShowPanel(/im', $arHeader, $arShowPanel);
if (!in_array($dir, array('mail_join')) && empty($arShowHead))
{
preg_match_all('/$APPLICATION->(ShowCSS|ShowHeadScripts|ShowHeadStrings)(/im', $arHeader, $arShowHead);
if (!$arShowHead[0] || count($arShowHead[0]) != 3)
{
$arMessage .= GetMessage("NO_SHOWHEAD", array("#template#" => $dir))."n";
}
}
if (!in_array($dir, array('empty', 'mail_join')) && empty($arShowTitle))
{
$arMessage .= GetMessage("NO_SHOWTITLE", array("#template#" => $dir))."n";
}
if (!in_array($dir, array('mobile_app', 'desktop_app', 'empty', 'learning_10_0_0', 'call_app', 'mail_join')) && empty($arShowPanel))
{
$arMessage .= GetMessage("NO_SHOWPANEL", array("#template#" => $dir))."n";
}
}
}
$arCount++;
}
}
}
if ($arCount == 0)
{
$arResult["MESSAGE"]["PREVIEW"] = GetMessage("NOT_FOUND_TEMPLATE");
}
elseif ($arMessage == '')
{
$arResult["STATUS"] = true;
}
$arResult["MESSAGE"] = array (
"PREVIEW" => GetMessage("TEMPLATE_CHECK_COUNT", array("#count#" => $arCount)),
"DETAIL" => $arMessage
);
return $arResult;
}