array(), MOD => array(), GROUP_MEMBER => array(), USER => array(), ); $users_cnt = array( 'admin' => 0, 'mod' => 0, 'group_member' => 0, 'ignore_load' => 0, 'user' => 0, 'guest' => 0, ); $online = $online_short = array('userlist' => ''); $sql = " SELECT u.username, u.user_id, u.user_opt, u.user_rank, u.user_level, s.session_logged_in, s.session_ip, (s.session_time - s.session_start) AS ses_len, COUNT(s.session_id) AS sessions, COUNT(DISTINCT s.session_ip) AS ips FROM ". BB_SESSIONS ." s, ". BB_USERS ." u WHERE s.session_time > $time_online AND u.user_id = s.session_user_id GROUP BY s.session_user_id ORDER BY u.username "; foreach (DB()->fetch_rowset($sql) as $u) { if ($u['session_logged_in']) { $stat = array(); $name = profile_url($u); $level = $u['user_level']; if ($level == ADMIN) { $name = "$name"; $users_cnt['admin']++; } else if ($level == MOD) { $name = "$name"; $users_cnt['mod']++; } else if ($level == GROUP_MEMBER) { $name = "$name"; $users_cnt['group_member']++; } else { $users_cnt['user']++; } if ($u['sessions'] > 3) { $color = ($u['sessions'] > 2) ? '#FF0000' : '#B22222'; $s = $u['sessions']; $stat[] = "s:$s"; } if ($u['ips'] > 2) { $ip = $u['ips']; $stat[] = "ip:$ip"; } if ($u['ses_len'] > 6*3600 && $level == USER) { $t = round($u['ses_len'] / 3600, 1); $stat[] = "t:$t"; } $ulist[$level][] = ($stat) ? "$name [". join(', ', $stat) .']' : $name; } else { $guests_online = $u['ips']; $users_cnt['guest'] = $guests_online; } } if ($ulist) { $inline = $block = $short = array(); foreach ($ulist as $level => $users) { if (empty($users)) continue; if (count($users) > 200) { $style = 'margin: 3px 0; padding: 2px 4px; border: 1px inset; height: 200px; overflow: auto;'; $block[] = "