- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/menu.php
- Класс: CMenu
- Вызов: CMenu::Init
function Init($InitDir, $bMenuExt=false, $template=false, $onlyCurrentDir=false)
{
global $USER;
if(
$this->debug !== false
&& BitrixMainApplication::getInstance()->getKernelSession()["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y"
&& (
$USER->IsAdmin()
|| BitrixMainApplication::getInstance()->getKernelSession()["SHOW_SQL_STAT"]=="Y"
)
)
{
$this->debug = new CDebugInfo(false);
$this->debug->Start();
}
$io = CBXVirtualIo::GetInstance();
$aMenuLinks = array();
$bFounded = false;
if($template === false)
$sMenuTemplate = '';
else
$sMenuTemplate = $template;
$InitDir = str_replace("\", "/", $InitDir);
$Dir = $InitDir;
$site_dir = false;
if(defined("SITE_DIR") && SITE_DIR <> '')
{
$site_dir = SITE_DIR;
}
elseif(array_key_exists("site", $_REQUEST) && $_REQUEST["site"] <> '')
{
$rsSites = CSite::GetByID($_REQUEST["site"]);
if($arSite = $rsSites->Fetch())
$site_dir = $arSite["DIR"];
}
while($Dir <> '')
{
if($site_dir !== false && (mb_strlen(trim($Dir, "/")) < mb_strlen(trim($site_dir, "/"))))
break;
$Dir = rtrim($Dir, "/");
$menu_file_name = $io->CombinePath($_SERVER["DOCUMENT_ROOT"], $Dir, ".".$this->type.".menu.php");
if($io->FileExists($menu_file_name))
{
include($io->GetPhysicalName($menu_file_name));
$this->MenuDir = $Dir."/";
$this->arMenu = $aMenuLinks;
$this->template = $sMenuTemplate;
$bFounded = true;
break;
}
if($Dir == "")
break;
$pos = bxstrrpos($Dir, "/");
if($pos===false || $onlyCurrentDir == true)
break;
$Dir = mb_substr($Dir, 0, $pos + 1);
}
if($bMenuExt)
{
$Dir = $InitDir;
while($Dir <> '')
{
if($site_dir !== false && (mb_strlen(trim($Dir, "/")) < mb_strlen(trim($site_dir, "/"))))
break;
$Dir = rtrim($Dir, "/");
$menu_file_name = $io->CombinePath($_SERVER["DOCUMENT_ROOT"], $Dir, ".".$this->type.".menu_ext.php");
if($io->FileExists($menu_file_name))
{
include($io->GetPhysicalName($menu_file_name));
if(!$bFounded)
$this->MenuDir = $Dir."/";
$this->MenuExtDir = $Dir."/";
$this->arMenu = $aMenuLinks;
$this->template = $sMenuTemplate;
$bFounded = true;
break;
}
if($Dir == "")
break;
$pos = bxstrrpos($Dir, "/");
if($pos===false || $onlyCurrentDir == true)
break;
$Dir = mb_substr($Dir, 0, $pos + 1);
}
}
return $bFounded;
}