Exemple #1
0
 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;
 }
Exemple #2
0
 /**
  * <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>
  * &lt;?
  * $lm = new CMenu("left");
  * <b>$lm-&gt;Init</b>($APPLICATION-&gt;GetCurDir(), true);
  * $lm-&gt;template = "/bitrix/templates/demo/left.menu_template.php";
  * echo $lm-&gt;GetMenuHtml();
  * ?&gt;
  * </pre>
  *
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li><a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&amp;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;
 }
Exemple #3
0
 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;
 }