- Модуль: 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);
}