• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/rooms/manager.php
  • Класс: BitrixCalendarRoomsManager
  • Вызов: Manager::getRoomsList
static function getRoomsList(): ?array
{
	$roomQuery = LocationTable::query()
		->setSelect([
			'LOCATION_ID' => 'ID',
			'NECESSITY',
            'CAPACITY',
			'SECTION_ID',
			'CATEGORY_ID',
			'NAME' => 'SECTION.NAME',
			'COLOR' => 'SECTION.COLOR',
			'OWNER_ID' => 'SECTION.OWNER_ID',
			'CAL_TYPE' => 'SECTION.CAL_TYPE',
            ])
		->registerRuntimeField('SECTION',
               new ReferenceField(
                   'SECTION',
                   SectionTable::getEntity(),
                   QueryJoin::on('ref.ID', 'this.SECTION_ID'),
                   ['join_type' => QueryJoin::TYPE_INNER]
               )
		)
		->setOrder(['ID' => 'ASC'])
		->cacheJoins(true)
		->setCacheTtl(86400)
		->exec()
	;

	[$roomsId, $result] = self::prepareRoomsQueryData($roomQuery);

	if (empty($result))
	{
		CCalendarSect::CreateDefault([
			'type' => self::TYPE,
			'ownerId' => 0
		]);
		LocationTable::cleanCache();

		return null;
	}

	$result = self::getRoomsAccess($roomsId, $result);

	foreach ($result as $room)
	{
		CCalendarSect::HandlePermission($room);
	}

	return CCalendarSect::GetSectionPermission($result);
}