• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sharing/sharingeventmanager.php
  • Класс: BitrixCalendarSharingSharingEventManager
  • Вызов: SharingEventManager::prepareEventForSave
static function prepareEventForSave($data, $userId): Event
{
	$ownerId = (int)($data['ownerId'] ?? null);
	$sectionId = self::getSectionId($userId);
	$attendeesCodes = ['U' . $userId, 'U' . $ownerId];
	$meeting = [
		'HOST_NAME' => CCalendar::GetUserName($userId),
		'NOTIFY' => true,
		'REINVITE' => false,
		'ALLOW_INVITE' => true,
		'MEETING_CREATOR' => $userId,
		'HIDE_GUESTS' => false,
	];

	$eventData = [
		'OWNER_ID' => $userId,
		'NAME' => (string)($data['eventName'] ?? ''),
		'DATE_FROM' => (string)($data['dateFrom'] ?? ''),
		'DATE_TO' => (string)($data['dateTo'] ?? ''),
		'TZ_FROM' => (string)($data['timezone'] ?? ''),
		'TZ_TO' => (string)($data['timezone'] ?? ''),
		'SKIP_TIME' => 'N',
		'SECTIONS' => [$sectionId],
		'EVENT_TYPE' => $data['eventType'],
		'ACCESSIBILITY' => 'busy',
		'IMPORTANCE' => 'normal',
		'ATTENDEES_CODES' => $attendeesCodes,
		'MEETING_HOST' => $userId,
		'IS_MEETING' => true,
		'MEETING' => $meeting,
		'DESCRIPTION' => (string)($data['description'] ?? ''),
	];

	return (new EventBuilderFromArray($eventData))->build();
}