- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/icloud/eventbuilder.php
- Класс: BitrixCalendarSyncIcloudEventBuilder
- Вызов: EventBuilder::getContent
public function getContent(Event $event, ?array $data = null): ?array
{
if (!Loader::includeModule('dav'))
{
return null;
}
$content = [
'TYPE' => 'VEVENT',
'CREATED' => date('Ymd\THis\Z', $event->getDateCreate()->getTimestamp()),
'LAST-MODIFIED' => date('Ymd\THis\Z', $event->getDateModified()->getTimestamp()),
'DTSTAMP' => date('Ymd\THis\Z', $event->getDateModified()->getTimestamp()),
'UID' => $event->getUid(),
'SUMMARY' => $event->getName(),
];
if ($event->isFullDayEvent())
{
$content['DTSTART'] = [
'VALUE' => $event->getStart()->format('Ymd'),
'PARAMETERS' => ['VALUE' => 'DATE'],
];
$content['DTEND'] = [
'VALUE' => $event->getEnd()->add('1 day')->format('Ymd'),
'PARAMETERS' => ['VALUE' => 'DATE'],
];
}
else
{
$content['DTSTART'] = [
'VALUE' => $event->getStart()->format('Ymd\THis'),
'PARAMETERS' => ['TZID' => $this->prepareTimeZone($event->getStartTimeZone())],
];
$content['DTEND'] = [
'VALUE' => $event->getEnd()->format('Ymd\THis'),
'PARAMETERS' => ['TZID' => $this->prepareTimeZone($event->getEndTimeZone())],
];
}
if ($event->getOriginalDateFrom())
{
if ($event->isFullDayEvent())
{
$content['RECURRENCE-ID'] = [
'VALUE' => $event->getOriginalDateFrom()->format('Ymd'),
'PARAMETERS' => ['VALUE' => 'DATE'],
];
}
else
{
$content['RECURRENCE-ID'] = [
'VALUE' => $event->getOriginalDateFrom()->format('Ymd\THis'),
'PARAMETERS' => ['TZID' => $this->prepareTimeZone($event->getStartTimeZone())],
];
}
}
if ($event->getAccessibility() === 'free')
{
$content['TRANSP'] = 'TRANSPARENT';
}
else
{
$content['TRANSP'] = 'OPAQUE';
}
if ($event->getLocation() && $event->getLocation()->getActualLocation())
{
$content['LOCATION'] = RoomsUtil::getTextLocation($event->getLocation()->getActualLocation());
}
$importance = $event->getImportance();
if ($importance === 'low')
{
$content['PRIORITY'] = 9;
}
else if ($importance === 'high')
{
$content['PRIORITY'] = 1;
}
else
{
$content['PRIORITY'] = 5;
}
$content['DESCRIPTION'] = $this->prepareDescription($event);
if (!$content['DESCRIPTION'])
{
unset($content['DESCRIPTION']);
}
if ($event->getRemindCollection() && $event->getRemindCollection()->getCollection())
{
$content['@VALARM'] = $this->prepareReminders($event);
}
if ($event->isRecurrence())
{
$content['RRULE'] = $this->prepareRecurrenceRule($event->getRecurringRule(), $event->getStartTimeZone());
}
$content['SEQUENCE'] = $event->getVersion();
if ($event->getExcludedDateCollection() && $event->isRecurrence())
{
$content['EXDATE'] = $this->prepareExcludedDates($event);
}
$this->prepareOuterParams($data, $content);
return $content;
}