• Модуль: 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;
}