• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/google/builders/buildersynceventfromexternaldata.php
  • Класс: BitrixCalendarSyncGoogleBuildersBuilderSyncEventFromExternalData
  • Вызов: BuilderSyncEventFromExternalData::prepareExcludedDatesCollection
private function prepareExcludedDatesCollection(): ?ExcludedDatesCollection
{
	if (empty($this->item['recurrence']))
	{
		return null;
	}

	$exDatesCollection = new ExcludedDatesCollection();
	foreach ($this->item['recurrence'] as $row)
	{
		if (strpos($row, 'EXDATE;') === 0)
		{
			$exDate = explode(':', substr($row, 7));

			if ($exDate[0] === 'VALUE=DATE-TIME')
			{
				$date = CoreBaseDate::createDateTimeFromFormat(
					$exDate[1],
					SyncGoogleHelper::EXCLUDED_DATE_TIME_FORMAT
				);

				if ($date)
				{
					$exDatesCollection->add($date);
				}
			}
			else if ($exDate[0] === 'VALUE=DATE')
			{
				$date = CoreBaseDate::createDateTimeFromFormat(
					$exDate[1],
					SyncGoogleHelper::EXCLUDED_DATE_FORMAT
				);

				if ($date)
				{
					$exDatesCollection->add($date);
				}
			}
		}
	}

	if ($exDatesCollection->count())
	{
		return $exDatesCollection;
	}

	return null;
}