• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sect.php
  • Класс: CCalendarSect
  • Вызов: CCalendarSect::CreateDefault
static function CreateDefault($params = [])
{
	if ($params['type'] === 'user' || $params['type'] === 'group')
	{
		$name = CCalendar::GetOwnerName($params['type'], $params['ownerId']);
	}
	else
	{
		$name = $params['type'] === 'location' ? Loc::getMessage('EC_DEF_SECT_LOCATION_CAL') : Loc::getMessage('EC_DEF_SECT_GROUP_CAL');
	}

	$userId = $params['type'] === 'user' ? $params['ownerId'] : CCalendar::GetCurUserId();

	if ($userId > 0)
	{
		$arFields = [
			'CAL_TYPE' => $params['type'],
			'NAME' => $name,
			'DESCRIPTION' => Loc::getMessage('EC_DEF_SECT_DESC'),
			'COLOR' => CCalendar::Color(),
			'OWNER_ID' => $params['ownerId'],
			'IS_EXCHANGE' => 0,
			'ACCESS' => CCalendarSect::GetDefaultAccess($params['type'], $params['ownerId']),
			'PERM' => [
				'view_time' => true,
				'view_title' => true,
				'view_full' => true,
				'add' => true,
				'edit' => true,
				'edit_section' => true,
				'access' => true,
			],
			'EXTERNAL_TYPE' => self::EXTERNAL_TYPE_LOCAL,
		];

		if($params['type'] === 'location')
		{
			$arFields['NECESSITY'] = 'N';
			$arFields['CAPACITY'] = 0;

			$builder = new BitrixCalendarCoreBuildersRoomsRoomBuilderFromArray($arFields);
			$room = $builder->build();

			RoomsManager::createInstanceWithRoom($room)
				->createRoom()
				->saveAccess()
				->clearCache()
				->eventHandler('OnAfterCalendarRoomCreate')
				->addPullEvent('create_room')
			;

			$arFields['ID'] = $room->getId();
		}
		else
		{
			$arFields['ID'] = self::Edit([
				 'arFields' => $arFields,
				 'userId' => $userId,
			]);
		}

		if ($arFields['ID'] > 0)
		{
			return $arFields;
		}
	}
	return false;
}