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