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