• Модуль: imconnector
  • Путь к файлу: ~/bitrix/modules/imconnector/lib/Controller/Openlines.php
  • Класс: BitrixImConnectorControllerOpenlines
  • Вызов: Openlines::listAction
public function listAction(string $connectorId, bool $withConnector = false, bool $withQr = false): array
{
	$statuses = Status::getInstanceAllLine($connectorId);

	$lines = [];
	foreach ($statuses as $lineId => $status)
	{
		if (
			!$status->getError()
			&& $status->getRegister()
			&& $status->getActive()
		)
		{
			$lines[$lineId] = [
				'lineId' => $lineId
			];
		}
	}

	$allLines = Config::getAllLinesSettings(['LINE_ID' => 'ID', 'LINE_NAME']);
	foreach ($allLines as $key => $line)
	{
		unset($allLines[$key]['ID']);
		if (!$withConnector)
		{
			if (in_array((int)$line['LINE_ID'], array_keys($lines), true))
			{
				unset($allLines[$key]);
			}
		}
		else
		{
			if (!in_array((int)$line['LINE_ID'], array_keys($lines), true))
			{
				unset($allLines[$key]);
			}
		}
	}

	$lines = $this->convertKeysToCamelCase($allLines);

	foreach ($lines as $lineId => $line)
	{
		if (!Config::canViewLine($lineId))
		{
			unset($lines[$lineId]);
		}
		$lines[$lineId]['canEditLine'] = Config::canEditLine($lineId);
		$lines[$lineId]['canEditConnector'] = Config::canEditConnector($lineId);
	}

	foreach ($lines as $key => $line)
	{
		$linesQueue = Queue::getList([
			'select' => [
				'USER_ID'
			],
			'filter' => [
				'=CONFIG_ID' => $line['lineId'],
				'=USER.ACTIVE' => 'Y'
			],
		]);

		if (!isset($lines[$key]['userIds']))
		{
			$lines[$key]['userIds'] = array_map(function ($item) {
				return (int)$item['USER_ID'];
			}, $linesQueue->fetchAll());
		}
	}

	return array_values($lines);
}