• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/ical/incomingeventmanager.php
  • Класс: BitrixCalendarICalIncomingEventManager
  • Вызов: IncomingEventManager::updateEvent
static function updateEvent(array $event, $userId, $answer): array
{
	if (isset($event['DATE_FROM']))
	{
		$event['DATE_FROM_MAIL'] = $event['SKIP_TIME']
			? static::getDateString($event['DATE_FROM'])
			: static::getDateTimeString($event['DATE_FROM']);
		$event['DATE_FROM'] = static::getDateTimeString($event['DATE_FROM']);
	}

	if (isset($event['DATE_TO']))
	{
		$event['DATE_TO'] = static::getDateTimeString($event['DATE_TO']);
	}

	if (isset($event['DATE_CREATE']))
	{
		$event['DATE_CREATE'] = static::getDateTimeString($event['DATE_CREATE']);
	}

	if (isset($event['TIMESTAMP_X']))
	{
		$event['TIMESTAMP_X'] = static::getDateTimeString($event['TIMESTAMP_X']);
	}

	if (isset($event['DT_STAMP']))
	{
		$event['DT_STAMP'] = static::getDateTimeString($event['DT_STAMP']);
	}

	if (isset($event['TZ_FROM']))
	{
		$event['TZ_FROM'] = static::getTimezoneNameString($event['TZ_FROM']);
	}

	if (isset($event['TZ_TO']))
	{
		$event['TZ_TO'] = static::getTimezoneNameString($event['TZ_TO']);
	}

	$event['OWNER_ID'] = $userId;
	$event['MEETING_HOST'] = ICalUtil::getUserIdByEmail($event['ORGANIZER_MAIL']);
	$event['IS_MEETING'] = 1;
	$event['SECTION_CAL_TYPE'] = 'user';
	$event['ATTENDEES_CODES'] = ['U'.$event['OWNER_ID'], 'U'.$event['MEETING_HOST']];
	$event['MEETING_STATUS'] = $answer === 'confirmed' ? 'Y' : 'N';

	if (empty($event['ACCESSIBILITY']))
	{
		$event['ACCESSIBILITY'] = 'free';
	}

	if (empty($event['IMPORTANCE']))
	{
		$event['IMPORTANCE'] = 'normal';
	}

	if (empty($event['STATUS']))
	{
		$event['STATUS'] = $answer === 'ACCEPT' ? 'CONFIRMED' : 'CANCELLED';
	}

	if (empty($event['REMIND']))
	{
		$event['REMIND'] = [
			'type' => 'min',
			'count' => '15'
		];
	}

	if (empty($event['MEETING']))
	{
		$event['MEETING'] = [
			'HOST_NAME' => $event['ORGANIZER_MAIL']['name'],
			'NOTIFY' => 1,
			'REINVITE' => 0,
			'ALLOW_INVITE' => 0,
			'MEETING_CREATOR' => $event['MEETING_HOST'],
			'EXTERNAL_TYPE' => 'mail',
		];
	}

	$originalValue = ICalUtil::getEventByUId($userId, $event['DAV_XML_ID']);
	$event['ID'] = $originalValue ? $originalValue['ID'] : 0;

	return $event;
}