• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/google/eventconverter.php
  • Класс: BitrixCalendarSyncGoogleEventConverter
  • Вызов: EventConverter::prepareExcludedDates
public function prepareExcludedDates(): array
{
	$rule = [];

	if (
		$this->originalEvent->getExcludedDateCollection()
		&& ($exdateCollection = $this->originalEvent->getExcludedDateCollection()->getDateCollectionNewerThanInterval())
	)
	{
		$originalDateList = [];
		if ($this->instanceCollection !== null)
		{
			/** @var SyncEvent $instance */
			foreach ($this->instanceCollection as $instance)
			{
				if ($originalDateFrom = $instance->getEvent()->getOriginalDateFrom())
				{
					$originalDateList[] = $originalDateFrom->format('Ymd');
				}
			}
		}

		if ($this->originalEvent->isFullDayEvent())
		{
			foreach ($exdateCollection as $exDate)
			{
				$date = $exDate->format('Ymd');
				if (!in_array($date, $originalDateList, true))
				{
					$rule[] = 'EXDATE;VALUE=DATE:' . $date;
				}
			}
		}
		else
		{
			$postfix = (clone $this->originalEvent->getStart())
				->setTimezone(new DateTimeZone('UTC'))
				->format('\THis\Z')
			;
			/** @var Date $exDate */
			foreach ($exdateCollection as $exDate)
			{
				$date = $exDate->format('Ymd');
				if (!in_array($date, $originalDateList, true))
				{
					$rule[] = 'EXDATE;TZID=UTC:' . $date . $postfix;
				}
			}
		}
	}

	return $rule;
}