• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site.php
  • Класс: CAllSite
  • Вызов: CAllSite::GetCurTemplate
static function GetCurTemplate()
{
	/** @noinspection PhpUnusedLocalVariableInspection */
	global $APPLICATION, $USER, $CACHE_MANAGER;

	$connection = MainApplication::getConnection();
	$helper = $connection->getSqlHelper();

	$conditionQuoted = $helper->quote("CONDITION");

	$siteTemplate = "";
	if(CACHED_b_site_template===false)
	{
		$strSql = "
			SELECT
				".$conditionQuoted.",
				TEMPLATE
			FROM
				b_site_template
			WHERE
				SITE_ID='".SITE_ID."'
			ORDER BY
				CASE
					WHEN ".$helper->getIsNullFunction($helper->getLengthFunction($conditionQuoted), 0)."=0 THEN 2
					ELSE 1
				END,
				SORT
			";
		$dbr = $connection->query($strSql);
		while($ar = $dbr->fetch())
		{
			$strCondition = trim($ar["CONDITION"]);
			if($strCondition <> '' && (!@eval("return ".$strCondition.";")))
			{
				continue;
			}
			if(($path = getLocalPath("templates/".$ar["TEMPLATE"], BX_PERSONAL_ROOT)) !== false && is_dir($_SERVER["DOCUMENT_ROOT"].$path))
			{
				$siteTemplate = $ar["TEMPLATE"];
				break;
			}
		}
	}
	else
	{
		if($CACHE_MANAGER->Read(CACHED_b_site_template, "b_site_template"))
		{
			$arSiteTemplateBySite = $CACHE_MANAGER->Get("b_site_template");
		}
		else
		{
			$dbr = $connection->query("
				SELECT
					".$conditionQuoted.",
					TEMPLATE,
					SITE_ID
				FROM
					b_site_template
				ORDER BY
					SITE_ID,
					CASE
						WHEN ".$helper->getIsNullFunction($helper->getLengthFunction($conditionQuoted), 0)."=0 THEN 2
						ELSE 1
					END,
					SORT
			");
			$arSiteTemplateBySite = array();
			while($ar = $dbr->fetch())
			{
				$arSiteTemplateBySite[$ar['SITE_ID']][] = $ar;
			}
			$CACHE_MANAGER->Set("b_site_template", $arSiteTemplateBySite);
		}

		if (isset($arSiteTemplateBySite[SITE_ID]) && is_array($arSiteTemplateBySite[SITE_ID]))
		{
			foreach($arSiteTemplateBySite[SITE_ID] as $ar)
			{
				$strCondition = trim($ar["CONDITION"]);
				if($strCondition <> '' && (!@eval("return ".$strCondition.";")))
				{
					continue;
				}
				if(($path = getLocalPath("templates/".$ar["TEMPLATE"], BX_PERSONAL_ROOT)) !== false && is_dir($_SERVER["DOCUMENT_ROOT"].$path))
				{
					$siteTemplate = $ar["TEMPLATE"];
					break;
				}
			}
		}
	}

	if($siteTemplate == "")
	{
		$siteTemplate = ".default";
	}

	$event = new MainEvent("main", "OnGetCurrentSiteTemplate", array("template" => $siteTemplate));
	$event->send();

	foreach($event->getResults() as $evenResult)
	{
		if(($result = $evenResult->getParameters()) <> '')
		{
			//only the first result matters
			$siteTemplate = $result;
			break;
		}
	}

	return $siteTemplate;
}