- Модуль: extranet
- Путь к файлу: ~/bitrix/modules/extranet/classes/general/extranet.php
- Класс: CExtranet
- Вызов: CExtranet::ExtranetRedirect
static function ExtranetRedirect()
{
global $USER, $APPLICATION;
$curPage = $APPLICATION->GetCurPageParam();
if(
(!defined("ADMIN_SECTION") || ADMIN_SECTION !== true)
&& (!defined("EXTRANET_NO_REDIRECT") || EXTRANET_NO_REDIRECT !== true)
&& (mb_strpos($curPage, "/bitrix/") !== 0)
&& (mb_strpos($curPage, "/upload/") !== 0)
&& (mb_strpos($curPage, "/oauth/") !== 0)
&& (mb_strpos($curPage, "/desktop_app/") !== 0)
&& (mb_strpos($curPage, "/docs/pub/") !== 0)
&& (mb_strpos($curPage, "/extranet/confirm/") !== 0)
&& (mb_strpos($curPage, "/mobile/ajax.php") !== 0)
&& (mb_strpos($curPage, "/mobile/mobile_component/") !== 0)
&& (mb_strpos($curPage, "/mobile/web_mobile_component/") !== 0)
&& (mb_strpos($curPage, "/mobileapp/") !== 0)
&& (mb_strpos($curPage, "/pub/") !== 0)
&& (mb_strpos($curPage, "/rest/") !== 0)
&& !preg_match("/^\/online\/([\.\-0-9a-zA-Z]+)(\/?)([^\/]*)$/i", $curPage)
&& (!self::IsExtranetSite())
&& self::GetExtranetSiteID() <> ''
&& $USER->IsAuthorized()
&& !$USER->IsAdmin()
&& !self::IsIntranetUser()
&& !$USER->CanDoFileOperation(
'fm_view_file',
[
SITE_ID,
BitrixMainApplication::getInstance()->getContext()->getRequest()->getScriptFile()
]
)
)
{
$rsSites = CSite::GetByID(self::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 (mb_strpos($curPage, $userSEFFolder) === 0)
{
$userSEFFolderExtranet = COption::GetOptionString("socialnetwork", "user_page", false, $arExtranetSite['LID']);
if ($userSEFFolderExtranet)
{
$URLToRedirect = $userSEFFolderExtranet.mb_substr($curPage, mb_strlen($userSEFFolder));
}
}
elseif (mb_strpos($curPage, $workgroupSEFFolder) === 0)
{
$workgroupSEFFolderExtranet = COption::GetOptionString("socialnetwork", "workgroups_page", false, $arExtranetSite['LID']);
if ($workgroupSEFFolderExtranet)
{
$URLToRedirect = $workgroupSEFFolderExtranet.mb_substr($curPage, mb_strlen($workgroupSEFFolder));
}
}
if (!$URLToRedirect)
{
$URLToRedirect = ($arExtranetSite["SERVER_NAME"] <> '' ? (CMain::IsHTTPS() ? "https" : "http") . "://" . $arExtranetSite["SERVER_NAME"] : "") . $arExtranetSite["DIR"];
}
$urlParams = array();
if (
($urlParts = parse_url($curPage))
&& !empty($urlParts['query'])
)
{
$keyWhiteList = [ 'IM_SETTINGS' ];
$pairsList = explode('&', $urlParts['query']);
foreach ($pairsList as $pair)
{
[ $key, $value ] = explode('=', $pair);
if (in_array($key, $keyWhiteList, true))
{
$urlParams[$key] = $value;
}
}
}
if (!empty($urlParams))
{
$URLToRedirect = CHTTP::urlAddParams($URLToRedirect, $urlParams);
}
LocalRedirect($URLToRedirect, true);
}
}
}