Your IP : 3.145.93.203
<?php
namespace Bitrix\Pull;
use Bitrix\Main\Localization\Loc;
Loc::loadMessages(__FILE__);
class Channel
{
const TYPE_PRIVATE = 'private';
const USER_SELF = null;
public static function getPublicId($params)
{
$config['USERS'] = isset($params['USER_ID'])? $params['USER_ID']: self::USER_SELF;
$config['TYPE'] = $params['TYPE']? $params['TYPE']: self::TYPE_PRIVATE;
$config['JSON'] = $params['JSON'] == 'Y'? 'Y': 'N';
$result = self::getPublicIds($config);
if ($result)
{
$result = array_shift($result);
}
return $result;
}
public static function getPublicIds($params)
{
if (!\CPullOptions::GetQueueServerStatus() || \CPullOptions::GetQueueServerVersion() < 4)
return false;
$users = isset($params['USERS'])? $params['USERS']: self::USER_SELF;
$type = $params['TYPE']? $params['TYPE']: self::TYPE_PRIVATE;
$returnJson = $params['JSON'] == 'Y'? 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;
}
}