• Модуль: 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' => '',
	);
}