- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
- Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
- Вызов: VendorDataExchangeManager::validateSyncEventChange
public function validateSyncEventChange(
SyncEntitiesSyncEvent $syncEvent,
SyncEntitiesSyncEvent $existsSyncEvent = null
): bool
{
if (!$existsSyncEvent)
{
return true;
}
if (
$syncEvent->getEventConnection() !== null
&& (
($syncEvent->getEventConnection()->getVendorVersionId() === $existsSyncEvent->getEventConnection()->getVendorVersionId())
|| ($syncEvent->getEventConnection()->getEntityTag() === $existsSyncEvent->getEventConnection()->getEntityTag())
)
)
{
if (
(
$syncEvent->getEventConnection()->getConnection()->getVendor()->getCode()
!== SyncGoogleHelper::GOOGLE_ACCOUNT_TYPE_API
)
|| !$this->hasDifferentEventFields($syncEvent, $existsSyncEvent))
{
return false;
}
}
// Changing an event for an invitee
// TODO: move it check to core.
if ($existsSyncEvent->getEventId() !== $existsSyncEvent->getParentId())
{
// temporary this functionality is turned off
// if (!$existsSyncEvent->getEvent()->isDeleted() && $this->hasDifferentEventFields($syncEvent, $existsSyncEvent))
// {
// $this->rollbackEvent(
// $existsSyncEvent,
// $syncEvent,
// 'CALENDAR_IMPORT_BLOCK_FROM_ATTENDEE'
// );
// }
return false;
}
// Prevent changing events with booking
if ($existsSyncEvent->getEvent()->getSpecialLabel() === ResourceBooking::EVENT_LABEL)
{
// temporary this functionality is turned off
// if ($this->hasDifferentEventFields($syncEvent, $existsSyncEvent))
// {
//
// $this->rollbackEvent(
// $existsSyncEvent,
// $syncEvent,
// 'CALENDAR_IMPORT_BLOCK_RESOURCE_BOOKING'
// );
// }
return false;
}
// temporary this functionality is turned off
// if ($syncEvent->getAction() !== SyncDictionary::SYNC_EVENT_ACTION['delete']
// && !$this->checkAttendeesAccessibility($existsSyncEvent->getEvent(), $syncEvent->getEvent()))
// {
// if ($this->hasDifferentEventFields($syncEvent, $existsSyncEvent))
// {
// $this->rollbackEvent(
// $existsSyncEvent,
// $syncEvent,
// 'CALENDAR_IMPORT_BLOCK_ATTENDEE_ACCESSIBILITY'
// );
// }
//
// return false;
// }
if ($syncEvent->isSingle() && $syncEvent->getEntityTag() !== $existsSyncEvent->getEntityTag())
{
return true;
}
if ($syncEvent->isRecurrence())
{
if ($syncEvent->getEntityTag() !== $existsSyncEvent->getEntityTag())
{
return true;
}
if ($syncEvent->hasInstances())
{
/** @var SyncEntitiesSyncEvent $instance */
foreach ($syncEvent->getInstanceMap() as $key => $instance)
{
$existsInstanceMap = $existsSyncEvent->getInstanceMap();
if (!$existsInstanceMap)
{
return true;
}
/** @var SyncEntitiesSyncEvent $existsInstance */
$existsInstance = $existsInstanceMap->getItem($key);
if (!$existsInstance)
{
return true;
}
if ($existsInstance->getEntityTag() !== $instance->getEntityTag())
{
return true;
}
}
}
}
if ($syncEvent->isInstance())
{
return true;
}
return false;
}