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