18 $eventParams = $this->getEventParams();
22 : $mainCounters = CUserCounter::GetValues(
$userId)
30 'counters' => $mainCounters,
31 'chatCounters' => $chatCounters,
32 'notifyLastId' => (new \Bitrix\Im\Notify())->getLastId(),
33 'desktopStatus' => $this->CheckDesktopStatusOnline(
$userId),
34 'serverTime' => time(),
35 'lastUpdate' => (new \Bitrix\Main\Type\DateTime())->format(DateTimeInterface::RFC3339),
36 'eventParams' => $eventParams,
40 private function getEventParams():
array
49 foreach(
$event->getResults() as $eventResult)
53 $result[$eventResult->getModuleId()] = $eventResult->getParameters();
61 private function checkDesktopStatusOnline(
int $userId): bool
64 if ($this->isPullEnable() && CPullOptions::GetNginxStatus())
66 $maxOnlineTime = $this->GetSessionLifeTime();
70 $desktopLastDateStatus =
$status[
'DESKTOP_LAST_DATE'] ??
null;
73 $desktopLastDateStatus instanceof \Bitrix\Main\Type\DateTime
74 && $desktopLastDateStatus->getTimestamp() + $maxOnlineTime + 60 > time()
85 $updateStateInterval = $this->getSessionLifeTime() - 60;
87 if ($updateStateInterval < 100)
89 $updateStateInterval = 100;
91 elseif ($updateStateInterval > 3600)
93 $updateStateInterval = 3600;
96 return $updateStateInterval;
99 private function getSessionLifeTime(): int
103 $sessTimeout = CUser::GetSecondsForLimitOnline();
105 if (
$USER instanceof CUser)
111 $sessTimeout = min(
$arPolicy[
"SESSION_TIMEOUT"] * 60, $sessTimeout);
115 $sessTimeout = (int)$sessTimeout;
117 if ($sessTimeout <= 120)
125 private function isPullEnable(): bool
127 return \Bitrix\Main\Loader::includeModule(
'pull');
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)