• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_rest.php
  • Класс: CVoxImplantRestService
  • Вызов: CVoxImplantRestService::getUser
static function getUser($params, $n, $server)
{
	if (!isset($params['USER_ID']))
	{
		throw new BitrixRestRestException('Parameter USER_ID is not set');
	}

	if (is_array($params['USER_ID']))
	{
		$userIds = array_map('intval', $params['USER_ID']);
	}
	else
	{
		$userIds = [(int)$params['USER_ID']];
	}

	$permissions = SecurityPermissions::createWithCurrentUser();
	$allowedUserIds = SecurityHelper::getAllowedUserIds(
		SecurityHelper::getCurrentUserId(),
		$permissions->getPermission(SecurityPermissions::ENTITY_USER, SecurityPermissions::ACTION_MODIFY)
	);

	if (is_array($allowedUserIds))
	{
		$userIds = array_intersect($userIds, $allowedUserIds);
	}

	if (empty($userIds))
	{
		throw new BitrixRestAccessException('You have no permission to query selected users');
	}

	if (IntegrationBitrix24::isInstalled())
	{
		$admins = IntegrationBitrix24::getAdmins();
	}
	else
	{
		$admins = [];
		$cursor = CAllGroup::GetGroupUserEx(1);
		while ($row = $cursor->fetch())
		{
			$admins[] = (int)$row['USER_ID'];
		}
	}

	if (isset($admins[SecurityHelper::getCurrentUserId()]))
	{
		$admins = [SecurityHelper::getCurrentUserId()];
	}

	$server->requestConfirmation(
		$admins,
		GetMessage(
			'VI_REST_GET_USERS_CONFIRM',
			array('#APPLICATION_NAME#' => BitrixVoximplantRestHelper::getRestAppName($server->getClientId()))
		)
	);

	$arExtParams = [
		'FIELDS' => ['ID'],
		'SELECT' => [
			'UF_VI_PASSWORD',
			'UF_VI_BACKPHONE',
			'UF_VI_PHONE',
			'UF_VI_PHONE_PASSWORD',
			'UF_PHONE_INNER',
		]
	];

	$cursor = CUser::GetList(
		'',
		'',
		['ID' => join(' | ', $userIds)],
		$arExtParams
	);
	$result = [];

	$account = new CVoxImplantAccount();
	while ($row = $cursor->Fetch())
	{
		$result[] = [
			'ID' => $row['ID'],
			'DEFAULT_LINE' => $row['UF_VI_BACKPHONE'],
			'PHONE_ENABLED' => $row['UF_VI_PHONE'],
			'SIP_SERVER' => str_replace('voximplant.com', 'bitrixphone.com', $account->GetCallServer()),
			'SIP_LOGIN' => 'phone'.$row['ID'],
			'SIP_PASSWORD' => $row['UF_VI_PHONE_PASSWORD'],
			'INNER_NUMBER' => $row['UF_PHONE_INNER'],
		];
	}

	return $result;
}