function Show($TYPE_SID, $HTML_BEFORE = "", $HTML_AFTER = "") { global $APPLICATION, $USER; $debug = null; if ($_SESSION["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y" && $USER->IsAdmin()) { $debug = new CDebugInfo(); $debug->Start(); } $arBanner = CAdvBanner::GetRandom($TYPE_SID); $strReturn = CAdvBanner::GetHTML($arBanner); if (strlen($strReturn) > 0) { CAdvBanner::FixShow($arBanner); if (($arIcons = CAdvBanner::GetEditIcons($arBanner, $TYPE_SID)) !== false) { $strReturn = $APPLICATION->IncludeString($strReturn, $arIcons); } $strReturn = $HTML_BEFORE . $strReturn . $HTML_AFTER; if ($debug) { $strReturn .= $debug->Output(); } return $strReturn; } if ($debug) { echo $debug->Output(); } return false; }
/** * <p>Инициализирует (заполняет пунктами) объект класса CMenu. Возвращает "true" если в каталоге сайта найден файл меню <nobr><b>.</b><i>тип меню</i><b>.menu.php</b></nobr> (поиск идет вверх по иерархии начиная с каталога <i>dir</i>), и "false" в противном случае.</p> * * * * * @param string $InitDir Папка, начиная с которой, объект будет искать файл <nobr><b>.</b><i>тип * меню</i><b>.menu.php</b></nobr> (файл с параметрами и пунктами меню). * * * * @param bool $MenuExt = false Если значение - "true", то для формирования массива меню, помимо * файлов <nobr><b>.</b><i>тип меню</i><b>.menu.php</b></nobr> будут также подключаться * файлы с именами вида <nobr><b>.</b><i>тип меню</i><b>.menu_ext.php</b></nobr>. В которых * вы можете манипулировать массивом меню <b>$aMenuLinks</b> произвольно, по * вашему усмотрению (например, дополнять пункты меню значениями из * инфо-блоков).<br>Необязателен. По умолчанию - "false". * * * * @param string $template = false Шаблон для вывода меню. <br>Необязателен. По умолчанию - "false", что * означает искать шаблон меню сначала в файле <nobr><b>/bitrix/templates/</b><i>ID * текущего шаблона сайта</i><b>/</b><i>тип меню</i><b>.menu_template.php</b></nobr>, затем * если шаблон не будет найден, то искать в файле * <nobr><b>/bitrix/templates/.default/</b><i>тип меню</i><b>.menu_template.php</b></nobr>. В самом * шаблоне меню вам будут доступны следующие предустановленные * переменные: <ul> <li> <b>$arMENU</b> - копия массива меню </li> <li> <b>$arMENU_LINK</b> - * ссылка на текущий массив меню </li> <li> <b>$TEXT</b> - текст текущего * пункта меню </li> <li> <b>$LINK</b> - ссылка текущего пункта меню </li> <li> * <b>$SELECTED</b> - выбран ли пункт меню в данный момент </li> <li> <b>$PERMISSION</b> - * доступ на страницу указанную в $LINK, возможны следующие значения: * <ul> <li> <b>D</b> - доступ запрещён </li> <li> <b>R</b> - чтение (право просмотра * содержимого файла) </li> <li> <b>U</b> - документооборот (право на * редактирование файла в режиме документооборота) </li> <li> <b>W</b> - * запись (право на прямое редактирование) </li> <li> <b>X</b> - полный доступ * (право на прямое редактирование файла и право на изменение прав * доступа на данных файл) </li> </ul> </li> <li> <b>$ADDITIONAL_LINKS</b> - * дополнительные ссылки для подсветки меню </li> <li> <b>$ITEM_TYPE</b> - "D" - * директория (если $LINK заканчивается на "/"), иначе "P" - страница </li> <li> * <b>$ITEM_INDEX</b> - порядковый номер пункта меню </li> <li> <b>$PARAMS</b> - * параметры пунктов меню </li> </ul> При этом в шаблоне для построения * меню необходимо будет инициализировать следующие перменные: <ul> * <li> <b>$sMenuProlog</b> - HTML который будет добавлен перед пунктами меню </li> * <li> <b>$sMenuEpilog</b> - HTML который будет добавлен после пунктов меню </li> <li> * <b>$sMenuBody</b> - HTML представляющий из себя один пункт меню </li> <li> * <b>$sMenu</b> - HTML представляющий из себя все меню целиком (только для * функций GetMenuHtmlEx) </li> </ul> * * * * @param onlyCurrentDi $r = false Если значение - "true", то отключается поиск файла меню в * родительских каталогах. * * * * @return bool * * * <h4>Example</h4> * <pre> * <? * $lm = new CMenu("left"); * <b>$lm->Init</b>($APPLICATION->GetCurDir(), true); * $lm->template = "/bitrix/templates/demo/left.menu_template.php"; * echo $lm->GetMenuHtml(); * ?> * </pre> * * * * <h4>See Also</h4> * <ul> <li><a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&CHAPTER_ID=04708" * >Меню</a></li> <li> <a href="http://dev.1c-bitrix.ru/api_help/main/reference/cmain/getmenu.php">CMain::GetMenu</a> * </li> </ul></b<a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/main/reference/cmenu/init.php * @author Bitrix */ public function Init($InitDir, $bMenuExt = false, $template = false, $onlyCurrentDir = false) { global $USER; if ($this->debug !== false && $_SESSION["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y" && ($USER->IsAdmin() || $_SESSION["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 && strlen(trim($Dir, "/")) < 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 = strrpos($Dir, "/"); if ($pos === false || $onlyCurrentDir == true) { break; } $Dir = substr($Dir, 0, $pos + 1); } if ($bMenuExt) { $Dir = $InitDir; while ($Dir != '') { if ($site_dir !== false && strlen(trim($Dir, "/")) < 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 = strrpos($Dir, "/"); if ($pos === false || $onlyCurrentDir == true) { break; } $Dir = substr($Dir, 0, $pos + 1); } } return $bFounded; }
function IncludeFile($rel_path, $arParams = array(), $arFunctionParams = array()) { /** @global CMain $APPLICATION */ /** @noinspection PhpUnusedLocalVariableInspection */ global $APPLICATION, $USER, $DB, $MESS, $DOCUMENT_ROOT; if ($_SESSION["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y" && ($USER->CanDoOperation('edit_php') || $_SESSION["SHOW_SQL_STAT"] == "Y")) { $debug = new CDebugInfo(); $debug->Start(); } elseif ($APPLICATION->ShowIncludeStat) { $debug = new CDebugInfo(); $debug->Start(); } else { $debug = null; } $sType = "TEMPLATE"; $bComponent = false; if (substr($rel_path, 0, 1) != "/") { $bComponent = true; $path = BX_PERSONAL_ROOT . "/templates/" . SITE_TEMPLATE_ID . "/" . $rel_path; if (!file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) { $sType = "DEFAULT"; $path = BX_PERSONAL_ROOT . "/templates/.default/" . $rel_path; if (!file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) { $path = BX_PERSONAL_ROOT . "/templates/" . SITE_TEMPLATE_ID . "/" . $rel_path; $module_id = substr($rel_path, 0, strpos($rel_path, "/")); if (strlen($module_id) > 0) { $path = "/bitrix/modules/" . $module_id . "/install/templates/" . $rel_path; $sType = "MODULE"; if (!file_exists($_SERVER["DOCUMENT_ROOT"] . $path)) { $sType = "TEMPLATE"; $path = BX_PERSONAL_ROOT . "/templates/" . SITE_TEMPLATE_ID . "/" . $rel_path; } } } } } else { $path = $rel_path; } if ($arFunctionParams["WORKFLOW"] && !IsModuleInstalled("workflow")) { $arFunctionParams["WORKFLOW"] = false; } elseif ($sType != "TEMPLATE" && $arFunctionParams["WORKFLOW"]) { $arFunctionParams["WORKFLOW"] = false; } $bDrawIcons = $arFunctionParams["SHOW_BORDER"] !== false && $APPLICATION->GetShowIncludeAreas() && ($USER->CanDoFileOperation('fm_edit_existent_file', array(SITE_ID, $path)) || $arFunctionParams["WORKFLOW"] && $USER->CanDoFileOperation('fm_edit_in_workflow', array(SITE_ID, $path))); if ($bDrawIcons) { $path_url = "path=" . $path; $encSiteTemplateId = urlencode(SITE_TEMPLATE_ID); $editor = ''; $resize = 'false'; $iSrcLine = 0; $sSrcFile = ''; if (!in_array($arFunctionParams['MODE'], array('html', 'text', 'php'))) { $arFunctionParams['MODE'] = $bComponent ? 'php' : 'html'; } if ($sType != 'TEMPLATE') { switch ($arFunctionParams['MODE']) { case 'html': $editor = "/bitrix/admin/fileman_html_edit.php?site=" . SITE_ID . "&"; break; case 'text': $editor = "/bitrix/admin/fileman_file_edit.php?site=" . SITE_ID . "&"; break; case 'php': $editor = "/bitrix/admin/fileman_file_edit.php?full_src=Y&site=" . SITE_ID . "&"; break; } $editor .= "templateID=" . $encSiteTemplateId . "&"; } else { switch ($arFunctionParams['MODE']) { case 'html': $editor = '/bitrix/admin/public_file_edit.php?bxpublic=Y&from=includefile&templateID=' . $encSiteTemplateId . '&'; $resize = 'false'; break; case 'text': $editor = '/bitrix/admin/public_file_edit.php?bxpublic=Y&from=includefile&noeditor=Y&'; $resize = 'true'; break; case 'php': $editor = '/bitrix/admin/public_file_edit_src.php?templateID=' . $encSiteTemplateId . '&'; $resize = 'true'; break; } } if ($arFunctionParams["TEMPLATE"]) { $arFunctionParams["TEMPLATE"] = "&template=" . urlencode($arFunctionParams["TEMPLATE"]); } if ($arFunctionParams["BACK_URL"]) { $arFunctionParams["BACK_URL"] = "&back_url=" . urlencode($arFunctionParams["BACK_URL"]); } else { $arFunctionParams["BACK_URL"] = "&back_url=" . urlencode($_SERVER["REQUEST_URI"]); } if ($arFunctionParams["LANG"]) { $arFunctionParams["LANG"] = "&lang=" . urlencode($arFunctionParams["LANG"]); } else { $arFunctionParams["LANG"] = "&lang=" . LANGUAGE_ID; } $arIcons = array(); $arPanelParams = array(); $bDefaultExists = false; if ($USER->CanDoOperation('edit_php') && $bComponent && function_exists("debug_backtrace")) { $bDefaultExists = true; $arPanelParams["TOOLTIP"] = array('TITLE' => GetMessage("main_incl_component1"), 'TEXT' => $rel_path); $aTrace = debug_backtrace(); $sSrcFile = $aTrace[0]["file"]; $iSrcLine = intval($aTrace[0]["line"]); $arIcons[] = array('URL' => 'javascript:' . $APPLICATION->GetPopupLink(array('URL' => "/bitrix/admin/component_props.php?" . "path=" . urlencode(CUtil::addslashes($rel_path)) . "&template_id=" . urlencode(CUtil::addslashes(SITE_TEMPLATE_ID)) . "&lang=" . LANGUAGE_ID . "&src_path=" . urlencode(CUtil::addslashes($sSrcFile)) . "&src_line=" . $iSrcLine . "")), 'ICON' => "parameters", 'TITLE' => GetMessage("main_incl_file_comp_param"), 'DEFAULT' => true); } if ($sType == "MODULE") { $arIcons[] = array('URL' => 'javascript:if(confirm(\'' . GetMessage("MAIN_INC_BLOCK_MODULE") . '\'))window.location=\'' . $editor . '&path=' . urlencode(BX_PERSONAL_ROOT . '/templates/' . SITE_TEMPLATE_ID . '/' . $rel_path) . $arFunctionParams["BACK_URL"] . $arFunctionParams["LANG"] . '&template=' . $path . '\';', 'ICON' => 'copy', 'TITLE' => str_replace("#MODE#", $arFunctionParams["MODE"], str_replace("#BLOCK_TYPE#", !is_set($arFunctionParams, "NAME") ? GetMessage("MAIN__INC_BLOCK") : $arFunctionParams["NAME"], GetMessage("main_incl_file_edit_copy")))); } elseif ($sType == "DEFAULT") { $arIcons[] = array('URL' => 'javascript:if(confirm(\'' . GetMessage("MAIN_INC_BLOCK_COMMON") . '\'))window.location=\'' . $editor . $path_url . $arFunctionParams["BACK_URL"] . $arFunctionParams["LANG"] . $arFunctionParams["TEMPLATE"] . '\';', 'ICON' => 'edit-common', 'TITLE' => str_replace("#MODE#", $arFunctionParams["MODE"], str_replace("#BLOCK_TYPE#", !is_set($arFunctionParams, "NAME") ? GetMessage("MAIN__INC_BLOCK") : $arFunctionParams["NAME"], GetMessage("MAIN_INC_BLOCK_EDIT")))); $arIcons[] = array('URL' => $editor . '&path=' . urlencode(BX_PERSONAL_ROOT . '/templates/' . SITE_TEMPLATE_ID . '/' . $rel_path) . $arFunctionParams["BACK_URL"] . $arFunctionParams["LANG"] . '&template=' . $path, 'ICON' => 'copy', 'TITLE' => str_replace("#MODE#", $arFunctionParams["MODE"], str_replace("#BLOCK_TYPE#", !is_set($arFunctionParams, "NAME") ? GetMessage("MAIN__INC_BLOCK") : $arFunctionParams["NAME"], GetMessage("MAIN_INC_BLOCK_COMMON_COPY")))); } else { $arPanelParams["TOOLTIP"] = array('TITLE' => GetMessage('main_incl_file'), 'TEXT' => $path); $arIcons[] = array('URL' => 'javascript:' . $APPLICATION->GetPopupLink(array('URL' => $editor . $path_url . $arFunctionParams["BACK_URL"] . $arFunctionParams["LANG"] . $arFunctionParams["TEMPLATE"], "PARAMS" => array('width' => 770, 'height' => 470, 'resize' => $resize))), 'ICON' => 'bx-context-toolbar-edit-icon', 'TITLE' => str_replace("#MODE#", $arFunctionParams["MODE"], str_replace("#BLOCK_TYPE#", !is_set($arFunctionParams, "NAME") ? GetMessage("MAIN__INC_BLOCK") : $arFunctionParams["NAME"], GetMessage("MAIN_INC_ED"))), 'DEFAULT' => !$bDefaultExists); if ($arFunctionParams["WORKFLOW"]) { $arIcons[] = array('URL' => '/bitrix/admin/workflow_edit.php?' . $arFunctionParams["LANG"] . '&fname=' . urlencode($path) . $arFunctionParams["TEMPLATE"] . $arFunctionParams["BACK_URL"], 'ICON' => 'bx-context-toolbar-edit-icon', 'TITLE' => str_replace("#BLOCK_TYPE#", !is_set($arFunctionParams, "NAME") ? GetMessage("MAIN__INC_BLOCK") : $arFunctionParams["NAME"], GetMessage("MAIN_INC_ED_WF"))); } } echo $this->IncludeStringBefore(); } $res = null; if (is_file($_SERVER["DOCUMENT_ROOT"] . $path)) { if (is_array($arParams)) { extract($arParams, EXTR_SKIP); } $res = (include $_SERVER["DOCUMENT_ROOT"] . $path); } if ($_SESSION["SESS_SHOW_INCLUDE_TIME_EXEC"] == "Y" && ($USER->CanDoOperation('edit_php') || $_SESSION["SHOW_SQL_STAT"] == "Y")) { echo $debug->Output($rel_path, $path); } elseif (is_object($debug)) { $debug->Stop($rel_path, $path); } if ($bDrawIcons) { $comp_id = $path; if ($sSrcFile) { $comp_id .= '|' . $sSrcFile; } if ($iSrcLine) { $comp_id .= '|' . $iSrcLine; } $arPanelParams['COMPONENT_ID'] = md5($comp_id); echo $this->IncludeStringAfter($arIcons, $arPanelParams); } return $res; }