• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/channel.php
  • Класс: BitrixPullChannel
  • Вызов: Channel::getPublicIds
static function getPublicIds($params = [])
{
	if (!CPullOptions::GetQueueServerStatus() || CPullOptions::GetQueueServerVersion() < 4)
		return false;

	$users = $params['USERS'] ?? self::USER_SELF;
	$type = $params['TYPE'] ?? self::TYPE_PRIVATE;
	$returnJson = $params['JSON']? true: false;

	$userList = [];
	if (is_array($users))
	{
		foreach ($users as $userId)
		{
			$userId = intval($userId);
			if ($userId > 0)
			{
				$userList[$userId] = $userId;
			}
		}
	}
	else
	{
		if ($users == self::USER_SELF)
		{
			global $USER;
			$userId = $USER->GetID();
		}
		else
		{
			$userId = intval($users);
		}
		if ($userId <= 0)
		{
			return false;
		}
		$userList[] = $userId;
	}

	$config = [];
	foreach ($userList as $userId)
	{
		$privateChannel = CPullChannel::Get($userId, true, false, $type);

		$config[$userId] = Array(
			'USER_ID' => (int)$userId,
			'PUBLIC_ID' => $privateChannel["CHANNEL_PUBLIC_ID"],
			'SIGNATURE' => CPullChannel::GetPublicSignature($privateChannel["CHANNEL_PUBLIC_ID"]),
			'START' => $privateChannel['CHANNEL_DT'],
			'END' => $privateChannel['CHANNEL_DT'] + CPullChannel::CHANNEL_TTL,
		);
	}

	if ($returnJson)
	{
		foreach ($config as $userId => $userConfig)
		{
			$userConfig = array_change_key_case($userConfig, CASE_LOWER);
			$userConfig['start'] = date('c', $userConfig['start']);
			$userConfig['end'] = date('c', $userConfig['end']);
			$config[$userId] = $userConfig;
		}
	}

	return $config;
}