• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/contactcenter.php
  • Класс: BitrixIntranetContactCenter
  • Вызов: ContactCenter::getImopenlinesConfigList
private function getImopenlinesConfigList(): array
{
	if (!Loader::includeModule("imopenlines"))
	{
		return [];
	}
	$userPermissions = Permissions::createWithCurrentUser();

	$allowedUserIds = Helper::getAllowedUserIds(
		Helper::getCurrentUserId(),
		$userPermissions->getPermission(Permissions::ENTITY_CONNECTORS, Permissions::ACTION_MODIFY)
	);

	$limit = null;
	if (is_array($allowedUserIds))
	{
		$limit = array();
		$orm = BitrixImOpenlinesModelQueueTable::getList(Array(
			'filter' => Array(
				'=USER_ID' => $allowedUserIds
			)
		));
		while ($row = $orm->fetch())
		{
			$limit[$row['CONFIG_ID']] = $row['CONFIG_ID'];
		}
	}

	$configManager = new BitrixImOpenLinesConfig();
	$result = $configManager->getList([
		'select' => [
			'ID',
			'NAME' => 'LINE_NAME',
			'IS_ACTIVE' => 'ACTIVE',
			'MODIFY_USER_ID'
		],
		'filter' => ['=TEMPORARY' => 'N'],
		'order' => ['LINE_NAME']
	]);
	foreach ($result as $id => $config)
	{
		if (!is_null($limit))
		{
			if (!isset($limit[$config['ID']]) && !in_array($config['MODIFY_USER_ID'], $allowedUserIds, true))
			{
				unset($result[$id]);
				continue;
			}
		}

		$result[$id] = $config;
	}

	return $result;
}