• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendordataexchangemanager.php
  • Класс: BitrixCalendarSyncManagersVendorDataExchangeManager
  • Вызов: VendorDataExchangeManager::hasDifferentEventFields
private function hasDifferentEventFields(
	SyncEntitiesSyncEvent $syncEvent,
	SyncEntitiesSyncEvent $existSyncEvent
): bool
{
	if (!$syncEvent->getEvent() && !$existSyncEvent->getEvent())
	{
		return false;
	}

	if ($syncEvent->getAction() === SyncDictionary::SYNC_EVENT_ACTION['delete']
		&& !$existSyncEvent->getEvent()->isDeleted()
	)
	{
		return true;
	}

	$comparator = new EventCompareManager($syncEvent->getEvent(), $existSyncEvent->getEvent());

	$diff = $comparator->getDiff();
	$significantFields = [
		EventCompareManager::COMPARE_FIELDS['name'] => true,
		EventCompareManager::COMPARE_FIELDS['start'] => true,
		EventCompareManager::COMPARE_FIELDS['end'] => true,
		EventCompareManager::COMPARE_FIELDS['recurringRule'] => true,
		EventCompareManager::COMPARE_FIELDS['description'] => true,
		'excludedDates' => true,
	];
	$significantDiff = array_intersect_key($diff, $significantFields);

	return !empty($significantDiff);
}