- Модуль: pull
- Путь к файлу: ~/bitrix/modules/pull/classes/general/pull_channel.php
- Класс: CPullChannel
- Вызов: CPullChannel::GetConfig
static function GetConfig($userId, $cache = true, $reopen = false, $mobile = false)
{
$pullConfig = Array();
if (defined('BX_PULL_SKIP_LS'))
$pullConfig['LOCAL_STORAGE'] = 'N';
if (IsModuleInstalled('bitrix24'))
$pullConfig['BITRIX24'] = 'Y';
if (!CPullOptions::GetQueueServerHeaders())
$pullConfig['HEADERS'] = 'N';
$arChannel = CPullChannel::Get($userId, $cache, $reopen);
if (!is_array($arChannel))
{
return false;
}
$arChannels = [];
if (CPullOptions::GetQueueServerVersion() > 3)
{
if ($arChannel["CHANNEL_PUBLIC_ID"])
{
$arChannels[] = self::SignChannel($arChannel["CHANNEL_ID"].":".$arChannel["CHANNEL_PUBLIC_ID"]);
}
else
{
$arChannels[] = self::SignChannel($arChannel["CHANNEL_ID"]);
}
}
else
{
$arChannels[] = self::SignChannel($arChannel["CHANNEL_ID"]);
}
$nginxStatus = CPullOptions::GetQueueServerStatus();
$webSocketStatus = false;
if ($nginxStatus)
{
if (defined('BX_PULL_SKIP_WEBSOCKET'))
{
$pullConfig['WEBSOCKET'] = 'N';
}
else
{
$webSocketStatus = CPullOptions::GetWebSocketStatus();
}
if ($userId > 0)
{
$arChannelShared = CPullChannel::GetShared($cache, $reopen);
if (is_array($arChannelShared))
{
$arChannels[] = self::SignChannel($arChannelShared["CHANNEL_ID"]);
$arChannel['CHANNEL_DT'] = $arChannel['CHANNEL_DT'].'/'.$arChannelShared['CHANNEL_DT'];
}
}
}
$pullPath = ($nginxStatus? (CMain::IsHTTPS()? CPullOptions::GetListenSecureUrl($arChannels): CPullOptions::GetListenUrl($arChannels)): '/bitrix/components/bitrix/pull.request/ajax.php?UPDATE_STATE');
$pullPathWs = ($nginxStatus && $webSocketStatus? (CMain::IsHTTPS()? CPullOptions::GetWebSocketSecureUrl($arChannels): CPullOptions::GetWebSocketUrl($arChannels)): '');
$pullPathPublish = ($nginxStatus && CPullOptions::GetPublishWebEnabled()? (CMain::IsHTTPS()? CPullOptions::GetPublishWebSecureUrl($arChannels): CPullOptions::GetPublishWebUrl($arChannels)): '');
return $pullConfig+Array(
'CHANNEL_ID' => implode('/', $arChannels),
'CHANNEL_PUBLIC_ID' => CPullOptions::GetQueueServerVersion() > 3 && $arChannel["CHANNEL_PUBLIC_ID"]? self::SignPublicChannel($arChannel["CHANNEL_PUBLIC_ID"]): '',
'CHANNEL_DT' => $arChannel['CHANNEL_DT'],
'USER_ID' => $userId,
'LAST_ID' => $arChannel['LAST_ID'],
'PATH' => $pullPath,
'PATH_PUB' => $pullPathPublish,
'PATH_WS' => $pullPathWs,
'PATH_COMMAND' => defined('BX_PULL_COMMAND_PATH')? BX_PULL_COMMAND_PATH: '',
'METHOD' => ($nginxStatus? 'LONG': 'PULL'),
'REVISION' => PULL_REVISION_WEB,
'ERROR' => '',
);
}