- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/ical/mailinvitation/incominginvitationrequesthandler.php
- Класс: BitrixCalendarICalMailInvitationIncomingInvitationRequestHandler
- Вызов: IncomingInvitationRequestHandler::prepareToUpdateEvent
protected function prepareToUpdateEvent(Event $icalEvent, array $localEvent): array
{
$event = [];
if ($icalEvent->getStart() !== null)
{
if ($icalEvent->getStart()->getParameterValueByName('tzid') !== null)
{
$event['DATE_FROM'] = Helper::getIcalDateTime(
$icalEvent->getStart()->getValue(),
$icalEvent->getStart()->getParameterValueByName('tzid')
)->format(Date::convertFormatToPhp(FORMAT_DATETIME));
$event['TZ_FROM'] = $icalEvent->getStart()->getParameterValueByName('tzid');
}
else
{
$event['DATE_FROM'] = Helper::getIcalDate($icalEvent->getStart()->getValue())
->format(Date::convertFormatToPhp(FORMAT_DATE));
$event['TZ_FROM'] = null;
}
}
else
{
$event['DATE_FROM'] = $localEvent['DATE_FROM'];
$event['TZ_FROM'] = $localEvent['TZ_FROM'];
}
if ($icalEvent->getEnd() !== null)
{
if ($icalEvent->getEnd()->getParameterValueByName('tzid') !== null)
{
$event['DATE_TO'] = Helper::getIcalDateTime(
$icalEvent->getEnd()->getValue(),
$icalEvent->getEnd()->getParameterValueByName('tzid')
)->format(Date::convertFormatToPhp(FORMAT_DATETIME));
$event['TZ_TO'] = $icalEvent->getEnd()->getParameterValueByName('tzid');
}
else
{
$event['DATE_TO'] = Helper::getIcalDate($icalEvent->getEnd()->getValue())
->format(Date::convertFormatToPhp(FORMAT_DATE));
$event['TZ_TO'] = null;
}
}
else
{
$event['DATE_TO'] = $localEvent['DATE_TO'];
$event['TZ_TO'] = $localEvent['TZ_TO'];
}
if ($icalEvent->getName() !== null)
{
$event['NAME'] = $icalEvent->getName()->getValue();
}
if ($icalEvent->getModified() !== null)
{
$event['TIMESTAMP_X'] = Helper::getIcalDateTime($icalEvent->getModified()->getValue())
->format(Date::convertFormatToPhp(FORMAT_DATETIME));
}
if ($icalEvent->getCreated() !== null)
{
$invitationDateCreate = Helper::getIcalDateTime($icalEvent->getCreated()->getValue())->getTimestamp();
$localDateCreate = Util::getDateObject($localEvent['DATE_CREATE'])->getTimestamp();
if ($invitationDateCreate === $localDateCreate)
{
$event['DATE_CREATE'] = Helper::getIcalDateTime($icalEvent->getCreated()->getValue())
->format(Date::convertFormatToPhp(FORMAT_DATETIME))
;
}
}
if ($icalEvent->getDtStamp() !== null)
{
$event['DT_STAMP'] = Helper::getIcalDateTime($icalEvent->getDtStamp()->getValue())
->format(Date::convertFormatToPhp(FORMAT_DATETIME));
}
if ($icalEvent->getSequence() !== null && $icalEvent->getSequence()->getValue() > $localEvent['VERSION'])
{
$event['VERSION'] = $icalEvent->getSequence()->getValue();
}
if ($icalEvent->getDescription() !== null)
{
$event['DESCRIPTION'] = $icalEvent->getDescription()->getValue();
}
else
{
$event['DESCRIPTION'] = null;
}
$organizer = [];
if ($icalEvent->getOrganizer() !== null)
{
$organizer = $this->parseOrganizer($icalEvent->getOrganizer());
}
$event['OWNER_ID'] = $this->userId;
$event['MEETING_HOST'] = count($organizer)
? Helper::getUserIdByEmail($organizer)
: $localEvent['MEETING_HOST']
;
$event['IS_MEETING'] = 1;
$event['SECTION_CAL_TYPE'] = 'user';
$event['ATTENDEES_CODES'] = ['U'.$event['OWNER_ID'], 'U'.$event['MEETING_HOST']];
$event['MEETING_STATUS'] = $this->decision === 'accepted'
? self::MEETING_STATUS_ACCEPTED
: self::MEETING_STATUS_DECLINED
;
$event['ACCESSIBILITY'] = 'free';
$event['IMPORTANCE'] = 'normal';
$event['REMIND'] = [
'type' => 'min',
'count' => '15'
];
$event['MEETING'] = [
'HOST_NAME' => $icalEvent->getOrganizer()->getParameterValueByName('cn')
?? $organizer['EMAIL'] ?? $localEvent['MEETING']['HOST_NAME'],
'NOTIFY' => 1,
'REINVITE' => 0,
'ALLOW_INVITE' => 0,
'MEETING_CREATOR' => $event['MEETING_HOST'],
'EXTERNAL_TYPE' => 'mail',
];
if ($this->decision === 'declined')
{
$event['DELETED'] = self::SAFE_DELETED_YES;
}
return $event;
}