• Модуль: 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;
}