• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_rest.php
  • Класс: CVoxImplantRestService
  • Вызов: CVoxImplantRestService::sipGet
static function sipGet($arParams, $nav, $server)
{
	$permissions = SecurityPermissions::createWithCurrentUser();
	if (!$permissions->canPerform(SecurityPermissions::ENTITY_LINE, SecurityPermissions::ACTION_MODIFY))
	{
		throw new BitrixRestAccessException();
	}

	$arParams = array_change_key_case($arParams, CASE_UPPER);
	$arParams['FILTER'] ??= null;
	$arParams['SORT'] ??= null;
	$arParams['ORDER'] ??= null;

	$sort = $arParams['SORT'];
	$order = $arParams['ORDER'];

	if (isset($arParams['FILTER']) && is_array($arParams['FILTER']))
	{
		$arFilter = array_change_key_case($arParams['FILTER'], CASE_UPPER);
	}
	else
	{
		$arFilter = [];
	}
	$arFilter['APP_ID'] = $server->getAppId();

	$arReturn = [];

	$dbResCnt = BitrixVoximplantSipTable::getList([
		'filter' => $arFilter,
		'select' => ["CNT" => new BitrixMainEntityExpressionField('CNT', 'COUNT(1)')],
	]);
	$arResCnt = $dbResCnt->fetch();
	if ($arResCnt && $arResCnt["CNT"] > 0)
	{
		$arNavParams = self::getNavData($nav, true);

		$arSort = [];
		if ($sort && $order)
		{
			$arSort[$sort] = $order;
		}

		$dbRes = BitrixVoximplantSipTable::getList([
			'order' => $arSort,
			'select' => ['*', 'TITLE'],
			'filter' => $arFilter,
			'limit' => $arNavParams['limit'],
			'offset' => $arNavParams['offset'],
		]);

		$result = [];
		while ($arData = $dbRes->fetch())
		{
			unset($arData['ID']);
			unset($arData['APP_ID']);
			if ($arData['TYPE'] == CVoxImplantSip::TYPE_CLOUD)
			{
				unset($arData['INCOMING_SERVER']);
				unset($arData['INCOMING_LOGIN']);
				unset($arData['INCOMING_PASSWORD']);
			}
			else
			{
				unset($arData['REG_ID']);
			}
			$result[] = $arData;
		}

		return self::setNavData(
			$result,
			[
				"count" => $arResCnt['CNT'],
				"offset" => $arNavParams['offset']
			]
		);
	}

	return $arReturn;
}