29 private const COUNT_CONNECTIONS_FOR_REGULAR_SYNC = 10;
37 $this->factories = $factories;
49 $mapperFactory = ServiceLocator::getInstance()->get(
'calendar.service.mappers.factory');
65 public function exchange():
Result
68 foreach ($this->factories as $factory)
75 $exchangeManager =
new VendorDataExchangeManager($factory, self::getSyncSectionMap($factory));
76 $exchangeManager->exchange();
92 public function import(): Result
95 foreach ($this->factories as $factory)
97 $exchangeManager =
new VendorDataExchangeManager($factory, self::getSyncSectionMap($factory));
101 ->updateConnection($factory->getConnection())
107 $exchangeManager->renewSubscription($factory->getConnection());
109 catch (\Exception $e)
125 public static function importAgent(): string
127 if (!Loader::includeModule(
'calendar') || !Loader::includeModule(
'dav'))
129 return "\\Bitrix\\Calendar\\Sync\\Managers\\DataExchangeManager::importAgent();";
133 $connections = self::getConnections();
146 $userIds[] = $ownerId;
152 $factory = FactoriesCollection::createByConnection(
$connection)->fetch();
159 $exchangeManager =
new VendorDataExchangeManager($factory, self::getSyncSectionMap($factory));
163 ->updateConnection($factory->getConnection())
166 catch (RemoteAccountException $e)
170 catch (\Exception $e)
176 CounterService::addEvent(EventDictionary::SYNC_CHANGED, [
'user_ids' => $userIds]);
178 return "\\Bitrix\\Calendar\\Sync\\Managers\\DataExchangeManager::importAgent();";
187 private static function getConnections(): Core\Base\Map
190 $mapperFactory = ServiceLocator::getInstance()->get(
'calendar.service.mappers.factory');
192 return $mapperFactory->getConnection()->getMap(
195 Google\Helper::GOOGLE_ACCOUNT_TYPE_API,
196 Office365\Helper::ACCOUNT_TYPE
198 '=ENTITY_TYPE' => Core\Role\User::TYPE,
199 '=IS_DELETED' =>
'N',
201 self::COUNT_CONNECTIONS_FOR_REGULAR_SYNC,
202 [
'SYNCHRONIZED' =>
'ASC']
215 private static function getSyncSectionMap(FactoryBase $factory): SyncSectionMap
217 return (
new SyncSectionFactory())->getSyncSectionMapByFactory($factory);