- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/factories/synceventfactory.php
- Класс: BitrixCalendarSyncFactoriesSyncEventFactory
- Вызов: SyncEventFactory::getSyncEventCollectionByVendorIdList
public function getSyncEventCollectionByVendorIdList(
array $vendorEventIdList,
int $connectionId
): SyncEntitiesSyncEventMap
{
$syncEventMap = new SyncEntitiesSyncEventMap();
if (!$vendorEventIdList)
{
return $syncEventMap;
}
$filter = [
[
'logic' => 'or',
['VENDOR_EVENT_ID', 'in', $vendorEventIdList],
['RECURRENCE_ID', 'in', $vendorEventIdList],
],
['CONNECTION_ID', '=', $connectionId],
];
$query = ConditionTree::createFromArray($filter);
// $params = ['filter' => $query];
$eventConnectionMap = $this->eventConnectionMapper->getMap($query);
$impatientExportSyncEventList = [];
/** @var SyncConnectionEventConnection $eventConnection */
foreach ($eventConnectionMap as $eventConnection)
{
$syncEvent = new SyncEvent();
$syncEvent
->setEventConnection($eventConnection)
->setEvent($eventConnection->getEvent())
->setAction($eventConnection->getLastSyncStatus())
;
if ($syncEvent->isInstance())
{
/** @var SyncEvent $masterSyncEvent */
if ($masterSyncEvent = $syncEventMap->getItem($syncEvent->getVendorRecurrenceId()))
{
$masterSyncEvent->addInstance($syncEvent);
continue;
}
$impatientExportSyncEventList[$syncEvent->getVendorRecurrenceId()][$eventConnection->getVendorEventId()] = $syncEvent;
continue;
}
if (
$syncEvent->isRecurrence()
&& $instanceList = ($impatientExportSyncEventList[$syncEvent->getVendorEventId()] ?? null)
)
{
$syncEvent->addInstanceList($instanceList);
}
$syncEventMap->add(
$syncEvent,
$eventConnection->getVendorEventId()
);
}
if ($impatientExportSyncEventList)
{
foreach ($impatientExportSyncEventList as $syncEventList)
{
$syncEventMap->addItems($syncEventList);
}
}
return $syncEventMap;
}