Поддержка серверов

CExtranet::ExtranetRedirect: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=183842

//    CExtranet::ExtranetRedirect()
//    /bitrix/modules/extranet/classes/general/extranet.php:214

    public static function ExtranetRedirect()
    {
        global $USER, $APPLICATION;

        $curPage = $APPLICATION->GetCurPageParam();

        if(
            (!defined("ADMIN_SECTION") || ADMIN_SECTION !== true)
            && (!defined("EXTRANET_NO_REDIRECT") || EXTRANET_NO_REDIRECT !== true)
            && (strpos($curPage, "/bitrix/") !== 0)
            && (strpos($curPage, "/upload/") !== 0)
            && (strpos($curPage, "/oauth/") !== 0)
            && (strpos($curPage, "/desktop_app/") !== 0)
            && (strpos($curPage, "/docs/pub/") !== 0)
            && (strpos($curPage, "/extranet/confirm/") !== 0)
            && (strpos($curPage, "/mobile/ajax.php") !== 0)
            && (strpos($curPage, "/mobile/mobile_component/") !== 0)
            && (strpos($curPage, "/mobile/web_mobile_component/") !== 0)
            && (strpos($curPage, "/mobileapp/") !== 0)
            && (strpos($curPage, "/pub/") !== 0)
            && (strpos($curPage, "/rest/") !== 0)
            && !preg_match("/^\\/online\\/([\\.\\-0-9a-zA-Z]+)(\\/?)([^\\/]*)$/i", $curPage)
            && (!CExtranet::IsExtranetSite())
        )
        {
            if (
                strlen(CExtranet::GetExtranetSiteID()) > 0
                && $USER->IsAuthorized()
                && !$USER->IsAdmin()
                && !CExtranet::IsIntranetUser()
                && !$USER->CanDoFileOperation('fm_view_file', array(SITE_ID, \Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getScriptFile()))
            )
            {
                $rsSites = CSite::GetByID(CExtranet::GetExtranetSiteID());
                if (
                    ($arExtranetSite = $rsSites->Fetch())
                    && ($arExtranetSite["ACTIVE"] != "N")
                )
                {
                    $URLToRedirect = false;

                    $userSEFFolder = COption::GetOptionString("socialnetwork", "user_page", false, SITE_ID);
                    $workgroupSEFFolder = COption::GetOptionString("socialnetwork", "workgroups_page", false, SITE_ID);
                    if (strpos($curPage, $userSEFFolder) === 0)
                    {
                        $userSEFFolderExtranet = COption::GetOptionString("socialnetwork", "user_page", false, $arExtranetSite['LID']);
                        if ($userSEFFolderExtranet)
                        {
                            $URLToRedirect = $userSEFFolderExtranet.substr($curPage, strlen($userSEFFolder));
                        }
                    }
                    elseif (strpos($curPage, $workgroupSEFFolder) === 0)
                    {
                        $workgroupSEFFolderExtranet = COption::GetOptionString("socialnetwork", "workgroups_page", false, $arExtranetSite['LID']);
                        if ($workgroupSEFFolderExtranet)
                        {
                            $URLToRedirect = $workgroupSEFFolderExtranet.substr($curPage, strlen($workgroupSEFFolder));
                        }
                    }

                    if (!$URLToRedirect)
                    {
                        $URLToRedirect = (strlen($arExtranetSite["SERVER_NAME"]) > 0 ? (CMain::IsHTTPS() ? "https" : "http") . "://" . $arExtranetSite["SERVER_NAME"] : "") . $arExtranetSite["DIR"];
                    }

                    $urlParams = array();

                    if (
                        ($urlParts = parse_url($curPage))
                        && !empty($urlParts['query'])
                    )
                    {
                        $keyWhiteList = array('IM_SETTINGS');


                        $pairsList = explode('&', $urlParts['query']);
                        foreach ($pairsList as $pair)
                        {
                            list($key, $value) = explode('=', $pair);
                            if (in_array($key, $keyWhiteList))
                            {
                                $urlParams[$key] = $value;
                            }
                        }
                    }

                    if (!empty($urlParams))
                    {
                        $URLToRedirect = CHTTP::urlAddParams($URLToRedirect, $urlParams);
                    }

                    LocalRedirect($URLToRedirect, true);
                }
            }
        }
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение