• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/vendorsyncservice.php
  • Класс: BitrixCalendarSyncOffice365VendorSyncService
  • Вызов: VendorSyncService::getCalendarDelta
public function getCalendarDelta(SectionConnection $sectionLink): Generator
{
	foreach ($this->apiService->getCalendarDelta($sectionLink) as $batch)
	{
		$events = [];
		foreach ($batch as $item) {
			if (!empty($item['@removed']))
			{
				$events[$item['id']][Helper::EVENT_TYPES['deleted']] = new EventDto($item);
			}
			elseif ($item['type'] === Helper::EVENT_TYPES['single'])
			{
				$events[$item['id']][$item['type']] = new EventDto($item);
			}
			elseif ($item['type'] === Helper::EVENT_TYPES['series'])
			{
				$events[$item['id']][$item['type']] = new EventDto($item);
			}
			elseif ($item['type'] === Helper::EVENT_TYPES['exception'])
			{
				$events[$item['seriesMasterId']][Helper::EVENT_TYPES['exception']][$item['id']] = new EventDto($item);
				$events[$item['seriesMasterId']][Helper::EVENT_TYPES['occurrence']][] = new DateTimeDto($item['start']);
			}
			elseif ($item['type'] === Helper::EVENT_TYPES['occurrence'])
			{
				$events[$item['seriesMasterId']][Helper::EVENT_TYPES['occurrence']][] = new DateTimeDto($item['start']);
			}
		}
		foreach ($events as $id => $eventDelta)
		{
			yield $id => $eventDelta;
		}
	}
}