1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
sync.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Internals\Counter\Processor;
4
5use Bitrix\Calendar\Integration\Dav\ConnectionProvider;
6use Bitrix\Calendar\Internals\Counter\CounterDictionary;
7use Bitrix\Calendar\Internals\Counter\Event\Event;
8use Bitrix\Calendar\Internals\Counter\Event\EventCollection;
9use Bitrix\Calendar\Internals\Counter\Event\EventDictionary;
10use Bitrix\Calendar\Sync\Caldav;
11use Bitrix\Calendar\Sync\Icloud;
12use Bitrix\Calendar\Sync\Google;
13use Bitrix\Calendar\Sync\Office365;
14
15
16class Sync implements Base
17{
18 private const SUPPORTED_EVENTS = [
19 EventDictionary::SYNC_CHANGED,
20 EventDictionary::COUNTERS_UPDATE,
21 ];
22
23 private const PROVIDERS = [
28 ];
29
30 public function process(): void
31 {
32 $events = (EventCollection::getInstance())->list();
33 foreach ($events as $event)
34 {
35 /* @var $event Event */
36 $eventType = $event->getType();
37
38 if (in_array($eventType, self::SUPPORTED_EVENTS, true))
39 {
40 $affectedUsers = $event->getData()['user_ids'] ?? [];
41 $this->recountSyncErrors($affectedUsers);
42 }
43 }
44 }
45
46 private function recountSyncErrors(array $users): void
47 {
48 if (empty($users))
49 {
50 return;
51 }
52
53 $davConnectionProvider = new ConnectionProvider();
54
55 foreach ($users as $userId)
56 {
57 $syncErrors = 0;
58 $connections = $davConnectionProvider->getSyncConnections($userId, 'user', self::PROVIDERS);
59
60 foreach ($connections as $connection)
61 {
62 $isSuccess = \CCalendarSync::isConnectionSuccess($connection->getStatus());
63
64 if (!$isSuccess)
65 {
66 $syncErrors++;
67 }
68 }
69
70 \CUserCounter::Set($userId, CounterDictionary::COUNTER_SYNC_ERRORS, $syncErrors, '**', '', false);
71 }
72 }
73}
$connection
Определения actionsdefinitions.php:38
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
const CALDAV_TYPE
Определения helper.php:7
const GOOGLE_ACCOUNT_TYPE_API
Определения helper.php:16
const ACCOUNT_TYPE
Определения helper.php:8
static isConnectionSuccess(string $lastResult=null)
Определения calendar_sync.php:1259
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$event
Определения prolog_after.php:141