16 if (!\CPullOptions::GetQueueServerStatus())
22 throw new ArgumentException(
'$params["CHANNEL"] should be instance of \Bitrix\Pull\Model\Channel');
38 $cache =
$params[
'CACHE'] !==
false;
39 $reopen =
$params[
'REOPEN'] !==
false;
51 'CHANNEL_ID' =>
$params[
'CHANNEL']->getPrivateId(),
52 'CHANNEL_PUBLIC_ID' =>
$params[
'CHANNEL']->getPublicId(),
53 'CHANNEL_DT' =>
$params[
'CHANNEL']->getDateCreate()->getTimestamp(),
54 'CHANNEL_DT_END' =>
$params[
'CHANNEL']->getDateCreate()->getTimestamp() + static::ONE_YEAR,
56 $sharedChannel =
null;
59 $domain = defined(
'BX24_HOST_NAME')? BX24_HOST_NAME:
$_SERVER[
'SERVER_NAME'];
61 $isSharedMode = \CPullOptions::IsServerShared();
64 'SERVER_ENABLED' => \CPullOptions::GetQueueServerStatus(),
65 'MODE' => \CPullOptions::GetQueueServerMode(),
66 'HOSTNAME' => Config::getHostname(),
69 'WEBSOCKET_ENABLED' => $isSharedMode ? true : \CPullOptions::GetWebSocket(),
72 'PUBLISH_ENABLED' => $isSharedMode ? true : \CPullOptions::GetPublishWebEnabled(),
75 'CONFIG_TIMESTAMP' => \CPullOptions::GetConfigTimestamp(),
77 foreach ($serverConfig as
$key => $value)
79 if(is_string($value) && mb_strpos($value,
'#DOMAIN#') !==
false)
81 $serverConfig[
$key] = str_replace(
'#DOMAIN#', $domain, $value);
84 $config[
'SERVER'] = $serverConfig;
98 $config[
'CHANNELS'][
'SHARED'] = [
100 'START' => $sharedChannel[
'CHANNEL_DT'],
106 if (\CPullOptions::GetQueueServerVersion() > 3)
108 $privateId = $privateChannel[
'CHANNEL_PUBLIC_ID']
109 ?
"{$privateChannel['CHANNEL_ID']}:{$privateChannel['CHANNEL_PUBLIC_ID']}"
110 : $privateChannel[
'CHANNEL_ID']
122 $config[
'CHANNELS'][
'PRIVATE'] = [
124 'PUBLIC_ID' => $publicId,
125 'START' => $privateChannel[
'CHANNEL_DT'],
133 if (\CPullOptions::GetQueueServerVersion() >= 5)
135 $channelsForToken = [];
138 $channelsForToken[] = $sharedChannel[
'CHANNEL_ID'];
140 if ($privateChannel &&
$userId == 0)
142 $channelsForToken[] = $privateChannel[
'CHANNEL_ID'];
143 if ($privateChannel[
'CHANNEL_PUBLIC_ID'] !=
'')
145 $channelsForToken[] = $privateChannel[
'CHANNEL_PUBLIC_ID'];
149 'ttl' => \CPullOptions::GetConfigTtl()
152 if (\CPullOptions::GetConfigTtl() > 0 && !isset(
$config[
'EXP']))
154 $config[
'EXP'] = time() + \CPullOptions::GetConfigTtl();
159 $result[
'server'] = array_change_key_case(
$config[
'SERVER'], CASE_LOWER);
160 $result[
'api'] = array_change_key_case(
$config[
'API'], CASE_LOWER);
165 $result[
'channels'][
$type] = array_change_key_case($channel, CASE_LOWER);
167 $result[
'channels'][
$type][
'start'] = date(
'c', $channel[
'START']);
168 $result[
'channels'][
$type][
'end'] = date(
'c', $channel[
'END']);