- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/datasyncmanager.php
- Класс: BitrixCalendarSyncManagersDataSyncManager
- Вызов: DataSyncManager::getEventsToSync
private function getEventsToSync(
Connection $connection,
CDavGroupdavClientCalendar $client,
array $calendar,
?RequestLogger $logger = null
): array
{
$calendarEvents = [];
$syncToken = !$calendar['IS_NEW'] ? $calendar['SYNC_TOKEN'] : null;
$calendarItems = $client->GetCalendarItemsBySyncToken($calendar['XML_ID'], $syncToken, $logger);
if (!$calendarItems || !is_array($calendarItems))
{
return $calendarEvents;
}
foreach ($calendarItems as $item)
{
if (
(int)$item['status'] === 404
|| mb_strpos($item['getcontenttype'], 'text/calendar') !== false
)
{
$calendarEvents[] = [
'XML_ID' => $client::getBasenameWithoutExtension($item['href']),
'SYNC_TOKEN' => $item['getetag'] ?? null,
'STATUS' => $item['status'],
];
}
}
$calendarEvents = $this->syncCalendarEvents(
$connection,
$calendar['SECTION_ID'],
$calendarEvents
);
$eventsToUpdate = [];
$eventsMap = [];
foreach ($calendarEvents as $event)
{
$link = $client->GetRequestEventPath($calendar['XML_ID'], $event['XML_ID']);
$eventsToUpdate[] = $link;
$eventsMap[$link] = $event;
}
$calendarItems = [];
if ($eventsToUpdate)
{
$calendarItems = $client->GetCalendarItemsList(
$calendar['XML_ID'],
$eventsToUpdate,
true,
1,
[],
$logger
);
}
if (!$syncToken && $calendarItems)
{
$calendarItems = $this->applyTimeLimitForEvents($calendarItems);
}
return [$calendarItems, $eventsMap];
}