• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/controller/locationajax.php
  • Класс: BitrixCalendarControllerLocationAjax
  • Вызов: LocationAjax::updateRoomAction
public function updateRoomAction(): array
{
	if (Loader::includeModule('intranet') && !BitrixIntranetUtil::isIntranetUser())
	{
		return [];
	}

	$typeModel = TypeModel::createFromXmlId(Dictionary::CALENDAR_TYPE['location']);
	$accessController = new TypeAccessController(CCalendar::GetUserId());
	if (
		!$accessController->check(ActionDictionary::ACTION_TYPE_EDIT, $typeModel, [])
		|| !RoomsPermissionManager::isLocationFeatureEnabled()
	)
	{
		$this->addError(new BitrixMainError(Loc::getMessage('EC_ACCESS_DENIED')));
		return [];
	}

	$builder = new BitrixCalendarCoreBuildersRoomsRoomBuilderFromRequest($this->getRequest());
	$manager =
		RoomsManager::createInstanceWithRoom($builder->build())
			->updateRoom()
			->saveAccess()
			->clearCache()
			->eventHandler('OnAfterCalendarRoomUpdate')
			->addPullEvent('update_room')
	;

	if ($manager->getError())
	{
		$this->addError(
			$manager->getError()
		);
	}

	return $manager->prepareResponseData();
}