• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/rooms/iblockmeetingroom.php
  • Класс: BitrixCalendarRoomsIBlockMeetingRoom
  • Вызов: IBlockMeetingRoom::reserveMeetingRoom
static function reserveMeetingRoom(array $params)
{
	if (!Loader::includeModule('iblock'))
	{
		return false;
	}

	$tst = MakeTimeStamp($params['dateTo']);
	if (date('H:i', $tst) === '00:00')
	{
		$params['dateTo'] = CIBlockFormatProperties::DateFormat(
			CCalendar::DFormat(true),
			$tst + (23 * 60 + 59) * 60
		);
	}
	
	$settings = CCalendar::GetSettings(['request' => false]);
	$params['RMiblockId'] = $settings['rm_iblock_id'];
	
	$check = self::checkMeetingRoom($params);
	if ($check !== true)
	{
		return $check;
	}
	
	$fields = [
		'IBLOCK_ID' => $params['RMiblockId'],
		'IBLOCK_SECTION_ID' => $params['mrid'],
		'NAME' => $params['name'],
		'DATE_ACTIVE_FROM' => $params['dateFrom'],
		'DATE_ACTIVE_TO' => $params['dateTo'],
		'CREATED_BY' => CCalendar::GetCurUserId(),
		'DETAIL_TEXT' => $params['description'],
		'PROPERTY_VALUES' => [
			'UF_PERSONS' => $params['persons'],
			'PERIOD_TYPE' => 'NONE'
		],
		'ACTIVE' => 'Y'
	];
	
	$iBlockElem= new CIBlockElement;
	$id = $iBlockElem->Add($fields);
	
	// Hack: reserve meeting calendar based on old calendar's cache
	$cache = new CPHPCache;
	$cache->CleanDir('event_calendar/');
	$cache->CleanDir('event_calendar/events/');
	$cache->CleanDir('event_calendar/events/'.$params['RMiblockId']);
	
	return (int)$id;
}