• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/queue/queue.php
  • Класс: BitrixTasksInternalsCounterQueueQueue
  • Вызов: Queue::get
public function get(int $limit): array
{
	if (!empty($this->popped))
	{
		throw new CounterQueuePopException();
	}

	$sql = "
		SELECT 
			ID,
			USER_ID, 
			TYPE,
			TASK_ID
		FROM `". QueueTable::getTableName() ."`
		ORDER BY ID ASC
		LIMIT {$limit}
	";

	$res = Application::getConnection()->query($sql);

	$queue = [];
	while ($row = $res->fetch())
	{
		$this->popped[] = $row['ID'];

		$userId = (int) $row['USER_ID'];
		$type = $row['TYPE'];
		$key = $userId.'_'.$type;

		if (!array_key_exists($key, $queue))
		{
			$queue[$userId.'_'.$type] = [
				'USER_ID' => $userId,
				'TYPE' => $type
			];
		}
		$queue[$key]['TASKS'][] = (int) $row['TASK_ID'];
	}

	return $queue;
}