3namespace Bitrix\Calendar\Internals;
5use Bitrix\Calendar\Internals\Counter\Provider\GroupInvite;
6use Bitrix\Calendar\Internals\Counter\Provider\OpenEvent;
7use Bitrix\Calendar\Internals\Counter\State\Loader;
8use Bitrix\Calendar\Internals\Counter\State\State;
10use Bitrix\Calendar\Internals\Counter\CounterDictionary;
11use Bitrix\Calendar\Internals\Counter\Provider\Invite;
12use Bitrix\Calendar\Internals\Counter\Provider\Sync;
21 private static $instance = [];
35 if (!array_key_exists($userId, self::$instance))
37 self::$instance[$userId] =
new self($userId);
40 return self::$instance[$userId];
53 private function __construct(
$userId)
56 $this->state =
new State($this->userId,
new Loader($this->userId));
66 return match (
$name) {
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
const COUNTER_GROUP_INVITES
const COUNTER_OPEN_EVENTS
const META_PROP_NEW_EVENTS
const COUNTER_SYNC_ERRORS
static getInstance($userId)