- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/user.php
- Класс: BitrixImUser
- Вызов: User::getArrayWithOnline
static function getArrayWithOnline(array $users, array $options = ['JSON' => 'Y', 'SKIP_ONLINE' => 'Y']): array
{
$result = [];
foreach ($users as $user)
{
$result[$user->getId()] = $user->getArray($options);
}
$ids = array_keys($result);
if (empty($ids))
{
return [];
}
$statuses = StatusTable::query()
->setSelect(['USER_ID', 'IDLE', 'MOBILE_LAST_DATE', 'DESKTOP_LAST_DATE', 'LAST_ACTIVITY_DATE' => 'USER.LAST_ACTIVITY_DATE'])
->whereIn('USER_ID', $ids)
->fetchAll()
;
foreach ($statuses as $status)
{
$id = (int)$status['USER_ID'];
$result[$id]['last_activity_date'] = $status['LAST_ACTIVITY_DATE'] ? $status['LAST_ACTIVITY_DATE']->format('c') : false;
$result[$id]['desktop_last_date'] = $status['DESKTOP_LAST_DATE'] ? $status['DESKTOP_LAST_DATE']->format('c') : false;
$result[$id]['mobile_last_date'] = $status['MOBILE_LAST_DATE'] ? $status['MOBILE_LAST_DATE']->format('c') : false;
$result[$id]['idle'] = $status['IDLE'] ? $status['IDLE']->format('c') : false;
}
return array_values($result);
}