• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/synchronization.php
  • Класс: BitrixCalendarSyncManagersSynchronization
  • Вызов: Synchronization::deleteInstance
public function deleteInstance(Event $event, Context $context): Result
{
	$mainResult = new Result();

	if (
		!isset($context->diff['EXDATE'])
		&& !isset($context->sync['excludeDate'])
		&& !$event->getExcludedDateCollection()->count()
	)
	{
		$mainResult->addError(new Error('Not found info about exclude date'));
		return $mainResult;
	}

	if (!isset($context->sync['excludeDate']))
	{
		$diff = is_array($context->diff['EXDATE'])
			? $context->diff['EXDATE']
			: explode(';', $context->diff['EXDATE']);
		if (isset($context->sync['excludeDate']))
		{
			$excludeDate = $context->sync['excludeDate'];
		}
		else
		{
			$excludeDates = array_filter(
				$event->getExcludedDateCollection()->getCollection(),
				function($item) use ($diff)
				{
					return !in_array($item->format(CCalendar::DFormat(false)), $diff);
				});
			$excludeDate = $excludeDates ? reset($excludeDates) : [];
		}

		$context->add('sync', 'excludeDate', $excludeDate);
	}

	return $this->execActionEvent('deleteInstance', $event, $context);

}