ALTER TABLE `bb_sessions` ADD `bot_name` VARCHAR( 255 ) NOT NULL ;
line diff
1.1 --- a/config.php Mon Nov 19 09:30:57 2012 +0600
1.2 +++ b/config.php Mon Nov 19 11:55:39 2012 +0600
1.3 @@ -493,3 +493,60 @@
1.4 );
1.5
1.6
1.7 +
1.8 +$bb_cfg['bots'] = array (
1.9 + 'AdsBot-Google' => 'AdsBot [Google]',
1.10 + 'ia_archiver' => 'Alexa [Bot]',
1.11 + 'Scooter/' => 'Alta Vista [Bot]',
1.12 + 'Ask Jeeves' => 'Ask Jeeves [Bot]',
1.13 + 'Baiduspider+(' => 'Baidu [Spider]',
1.14 + 'Exabot/' => 'Exabot [Bot]',
1.15 + 'FAST Enterprise Crawler' => 'FAST Enterprise [Crawler]',
1.16 + 'FAST-WebCrawler/' => 'FAST WebCrawler [Crawler]',
1.17 + 'http://www.neomo.de/' => 'Francis [Bot]',
1.18 + 'Gigabot/' => 'Gigabot [Bot]',
1.19 + 'Mediapartners-Google' => 'Google Adsense [Bot]',
1.20 + 'Google Desktop' => 'Google Desktop',
1.21 + 'Feedfetcher-Google' => 'Google Feedfetcher',
1.22 + 'Googlebot' => 'Google [Bot]',
1.23 + 'heise-IT-Markt-Crawler' => 'Heise IT-Markt [Crawler]',
1.24 + 'heritrix/1.' => 'Heritrix [Crawler]',
1.25 + 'ibm.com/cs/crawler' => 'IBM Research [Bot]',
1.26 + 'ICCrawler - ICjobs' => 'ICCrawler - ICjobs',
1.27 + 'ichiro/' => 'ichiro [Crawler]',
1.28 + 'MJ12bot/' => 'Majestic-12 [Bot]',
1.29 + 'MetagerBot/' => 'Metager [Bot]',
1.30 + 'msnbot-NewsBlogs/' => 'MSN NewsBlogs',
1.31 + 'msnbot/' => 'MSN [Bot]',
1.32 + 'msnbot-media/' => 'MSNbot Media',
1.33 + 'NG-Search/' => 'NG-Search [Bot]',
1.34 + 'http://lucene.apache.org/nutch/' => 'Nutch [Bot]',
1.35 + 'NutchCVS/' => 'Nutch/CVS [Bot]',
1.36 + 'OmniExplorer_Bot/' => 'OmniExplorer [Bot]',
1.37 + 'online link validator' => 'Online link [Validator]',
1.38 + 'psbot/0' => 'psbot [Picsearch]',
1.39 + 'Seekbot/' => 'Seekport [Bot]',
1.40 + 'Sensis Web Crawler' => 'Sensis [Crawler]',
1.41 + 'SEO search Crawler/' => 'SEO Crawler',
1.42 + 'Seoma [SEO Crawler]' => 'Seoma [Crawler]',
1.43 + 'SEOsearch/' => 'SEOSearch [Crawler]',
1.44 + 'Snappy/1.1 ( http://www.urltrends.com/ )' => 'Snappy [Bot]',
1.45 + 'http://www.tkl.iis.u-tokyo.ac.jp/~crawler/' => 'Steeler [Crawler]',
1.46 + 'SynooBot/' => 'Synoo [Bot]',
1.47 + 'crawleradmin.t-info@telekom.de' => 'Telekom [Bot]',
1.48 + 'TurnitinBot/' => 'TurnitinBot [Bot]',
1.49 + 'voyager/1.0' => 'Voyager [Bot]',
1.50 + 'W3 SiteSearch Crawler' => 'W3 [Sitesearch]',
1.51 + 'W3C-checklink/' => 'W3C [Linkcheck]',
1.52 + 'W3C_*Validator' => 'W3C [Validator]',
1.53 + 'http://www.WISEnutbot.com' => 'WiseNut [Bot]',
1.54 + 'yacybot' => 'YaCy [Bot]',
1.55 + 'Yahoo-MMCrawler/' => 'Yahoo MMCrawler [Bot]',
1.56 + 'Yahoo! DE Slurp' => 'Yahoo Slurp [Bot]',
1.57 + 'Yahoo! Slurp' => 'Yahoo [Bot]',
1.58 + 'YahooSeeker/' => 'YahooSeeker [Bot]',
1.59 + 'Yandex/1.01.001 (compatible; Win16; I)' => 'Яндекс БОТ',
1.60 + 'Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)' => 'Яндекс [Bot]',
1.61 + 'bingbot/' => 'Bing [Bot]',
1.62 + 'Rambler/' => 'Rambler [Bot]',
1.63 +);
2.1 --- a/includes/online_userlist.php Mon Nov 19 09:30:57 2012 +0600
2.2 +++ b/includes/online_userlist.php Mon Nov 19 11:55:39 2012 +0600
2.3 @@ -5,10 +5,10 @@
2.4 global $lang;
2.5
2.6 // Obtain user/online information
2.7 -$logged_online = $guests_online = 0;
2.8 +$logged_online = $guests_online = $bots_online = $prev_user = 0;
2.9 $time_online = TIMENOW - 300;
2.10 -# $time_online = 0;
2.11 -
2.12 +$bot = array();
2.13 +
2.14 $ulist = array(
2.15 ADMIN => array(),
2.16 MOD => array(),
2.17 @@ -26,96 +26,116 @@
2.18 $online = $online_short = array('userlist' => '');
2.19
2.20 $sql = "
2.21 - SELECT
2.22 - u.username, u.user_id, u.user_opt, u.user_rank, u.user_level,
2.23 - u.ignore_srv_load,
2.24 - 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
2.25 - FROM ". BB_SESSIONS ." s, ". BB_USERS ." u
2.26 - WHERE s.session_time > $time_online
2.27 - AND u.user_id = s.session_user_id
2.28 - GROUP BY s.session_user_id
2.29 - ORDER BY u.username
2.30 + SELECT
2.31 + u.username, u.user_id, u.user_opt, u.user_rank, u.user_level,
2.32 + u.ignore_srv_load,
2.33 + s.session_logged_in, s.bot_name, s.session_ip, (s.session_time - s.session_start) AS ses_len,
2.34 + COUNT(s.session_id) AS sessions,
2.35 + COUNT(DISTINCT s.session_ip) AS ips
2.36 + FROM ". BB_SESSIONS ." s, ". BB_USERS ." u
2.37 + WHERE s.session_time > $time_online
2.38 + AND u.user_id = s.session_user_id
2.39 + GROUP BY s.session_id
2.40 + ORDER BY u.username
2.41 ";
2.42 -
2.43 +
2.44 foreach (DB()->fetch_rowset($sql) as $u)
2.45 {
2.46 - if ($u['session_logged_in'])
2.47 - {
2.48 - $stat = array();
2.49 - $name = profile_url($u);
2.50 - $level = $u['user_level'];
2.51 -
2.52 - if ($level == ADMIN)
2.53 - {
2.54 - $name = "$name";
2.55 - $users_cnt['admin']++;
2.56 - }
2.57 - else if ($level == MOD)
2.58 - {
2.59 - $name = "$name";
2.60 - $users_cnt['mod']++;
2.61 - }
2.62 - else if ($level == GROUP_MEMBER)
2.63 - {
2.64 - $name = "$name";
2.65 - $users_cnt['group_member']++;
2.66 - }
2.67 - else
2.68 - {
2.69 - $users_cnt['user']++;
2.70 - }
2.71 -
2.72 - if ($u['sessions'] > 3)
2.73 - {
2.74 - $color = ($u['sessions'] > 2) ? '#FF0000' : '#B22222';
2.75 - $s = $u['sessions'];
2.76 - $stat[] = "s:$s";
2.77 - }
2.78 - if ($u['ips'] > 2)
2.79 - {
2.80 - $ip = $u['ips'];
2.81 - $stat[] = "ip:$ip";
2.82 - }
2.83 - if ($u['ses_len'] > 6*3600 && $level == USER)
2.84 - {
2.85 - $t = round($u['ses_len'] / 3600, 1);
2.86 - $stat[] = "t:$t";
2.87 - }
2.88 -
2.89 - $ulist[$level][] = ($stat) ? "$name [". join(', ', $stat) .']' : $name;
2.90 - }
2.91 - else
2.92 - {
2.93 - $guests_online = $u['ips'];
2.94 - $users_cnt['guest'] = $guests_online;
2.95 - }
2.96 + if ($u['session_logged_in'])
2.97 + {
2.98 + if ( $u['user_id'] != $prev_user )
2.99 + {
2.100 + $stat = array();
2.101 + $name = profile_url($u);
2.102 + $level = $u['user_level'];
2.103 +
2.104 + if ($level == ADMIN)
2.105 + {
2.106 + $name = "$name";
2.107 + $users_cnt['admin']++;
2.108 + }
2.109 + else if ($level == MOD)
2.110 + {
2.111 + $name = "$name";
2.112 + $users_cnt['mod']++;
2.113 + }
2.114 + else if ($level == GROUP_MEMBER)
2.115 + {
2.116 + $name = "$name";
2.117 + $users_cnt['group_member']++;
2.118 + }
2.119 + else
2.120 + {
2.121 + $users_cnt['user']++;
2.122 + }
2.123 +
2.124 + if ($u['sessions'] > 3)
2.125 + {
2.126 + $color = ($u['sessions'] > 2) ? '#FF0000' : '#B22222';
2.127 + $s = $u['sessions'];
2.128 + $stat[] = "s:$s";
2.129 + }
2.130 + if ($u['ips'] > 2)
2.131 + {
2.132 + $ip = $u['ips'];
2.133 + $stat[] = "ip:$ip";
2.134 + }
2.135 + if ($u['ses_len'] > 6*3600 && $level == USER)
2.136 + {
2.137 + $t = round($u['ses_len'] / 3600, 1);
2.138 + $stat[] = "t:$t";
2.139 + }
2.140 +
2.141 + $ulist[$level][] = ($stat) ? "$name [". join(', ', $stat) .']' : $name;
2.142 + $prev_user = $u['user_id'];
2.143 + }
2.144 + }
2.145 + elseif($u['bot_name'])
2.146 + {
2.147 + $bots_online++;
2.148 + if(isset($ulist[ANONYMOUS][$u['bot_name']]))
2.149 + {
2.150 + $bot[$u['bot_name']]++;
2.151 + $ulist[ANONYMOUS][$u['bot_name']] = $u['bot_name'] .' ['. ($bot[$u['bot_name']]) .']';
2.152 + }
2.153 + else
2.154 + {
2.155 + $bot[$u['bot_name']] = 1;
2.156 + $ulist[ANONYMOUS][$u['bot_name']] = $u['bot_name'];
2.157 + }
2.158 + }
2.159 + else
2.160 + {
2.161 + $guests_online++;
2.162 + $users_cnt['guest'] = $guests_online;
2.163 + }
2.164 }
2.165 -
2.166 +
2.167 if ($ulist)
2.168 {
2.169 - $inline = $block = $short = array();
2.170 -
2.171 - foreach ($ulist as $level => $users)
2.172 - {
2.173 - if (empty($users)) continue;
2.174 -
2.175 - if (count($users) > 200)
2.176 - {
2.177 - $style = 'margin: 3px 0; padding: 2px 4px; border: 1px inset; height: 200px; overflow: auto;';
2.178 - $block[] = "
\n". join(",\n", $users) ."
\n";
2.179 - $short[] = ''. $lang['USERS'] .': '. count($users) .'';
2.180 - }
2.181 - else
2.182 - {
2.183 - $inline[] = join(",\n", $users);
2.184 - $short[] = join(",\n", $users);
2.185 - }
2.186 -
2.187 - $logged_online += count($users);
2.188 - }
2.189 -
2.190 - $online['userlist'] = join(",\n", $inline) . join("\n", $block);
2.191 - $online_short['userlist'] = join(",\n", $short);
2.192 + $inline = $block = $short = array();
2.193 +
2.194 + foreach ($ulist as $level => $users)
2.195 + {
2.196 + if (empty($users)) continue;
2.197 +
2.198 + if (count($users) > 200)
2.199 + {
2.200 + $style = 'margin: 3px 0; padding: 2px 4px; border: 1px inset; height: 200px; overflow: auto;';
2.201 + $block[] = "\n". join(",\n", $users) ."
\n";
2.202 + $short[] = ''. $lang['USERS'] .': '. count($users) .'';
2.203 + }
2.204 + else
2.205 + {
2.206 + $inline[] = join(",\n", $users);
2.207 + $short[] = join(",\n", $users);
2.208 + }
2.209 +
2.210 + if($level != ANONYMOUS) $logged_online += count($users);
2.211 + }
2.212 +
2.213 + $online['userlist'] = join(",\n", $inline) . join("\n", $block);
2.214 + $online_short['userlist'] = join(",\n", $short);
2.215 }
2.216
2.217 if (!$online['userlist'])
2.218 @@ -126,9 +146,9 @@
2.219 {
2.220 $online['userlist'] = $online_short['userlist'] = $lang['BROWSING_FORUM'] .' '. $online['userlist'];
2.221 }
2.222 -
2.223 -$total_online = $logged_online + $guests_online;
2.224 -
2.225 +
2.226 +$total_online = $logged_online + $guests_online + $bots_online;
2.227 +
2.228 if ($total_online > $bb_cfg['record_online_users'])
2.229 {
2.230 bb_update_config(array(
2.231 @@ -136,8 +156,8 @@
2.232 'record_online_date' => TIMENOW,
2.233 ));
2.234 }
2.235 -
2.236 -$online['stat'] = $online_short['stat'] = sprintf($lang['ONLINE_USERS'], $total_online, $logged_online, $guests_online);
2.237 +
2.238 +$online['stat'] = $online_short['stat'] = sprintf($lang['ONLINE_USERS'], $total_online, $logged_online, $guests_online, $bots_online);
2.239
2.240 $online['cnt'] = $online_short['cnt'] = <<cfg = array_merge($this->cfg, $cfg);
3.11 + $bot_name = '';
3.12 + foreach ($bb_cfg['bots'] as $bot => $name)
3.13 + {
3.14 + if(strstr($user_agent, $bot)) $bot_name = $name;
3.15 + }
3.16
3.17 $session_id = $this->sessiondata['sid'];
3.18
3.19 @@ -162,7 +168,8 @@
3.20 {
3.21 DB()->query("
3.22 UPDATE ". BB_SESSIONS ." SET
3.23 - session_time = ". TIMENOW ."
3.24 + session_time = ". TIMENOW .",
3.25 + bot_name = '$bot_name'
3.26 WHERE session_id = '$session_id'
3.27 LIMIT 1
3.28 ");
3.29 @@ -226,6 +233,7 @@
3.30 function session_create ($userdata, $auto_created = false)
3.31 {
3.32 global $bb_cfg;
3.33 + $user_browser = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'not browser';
3.34
3.35 $this->data = $userdata;
3.36 $session_id = $this->sessiondata['sid'];
3.37 @@ -234,6 +242,11 @@
3.38 $is_user = ($this->data['user_level'] != ADMIN);
3.39 $user_id = (int) $this->data['user_id'];
3.40 $mod_admin_session = ($this->data['user_level'] == ADMIN || $this->data['user_level'] == MOD);
3.41 + $bot_name = '';
3.42 + foreach ($bb_cfg['bots'] as $bot => $name)
3.43 + {
3.44 + if(strstr($user_browser, $bot)) $bot_name = $name;
3.45 + }
3.46
3.47 if (($bb_cfg['max_srv_load'] || $bb_cfg['max_reg_users_online']) && $login && $is_user && !$this->data['ignore_srv_load'])
3.48 {
3.49 @@ -269,6 +282,7 @@
3.50 'session_ip' => (string) USER_IP,
3.51 'session_logged_in' => (int) $login,
3.52 'session_admin' => (int) $mod_admin_session,
3.53 + 'bot_name' => $bot_name,
3.54 ));
3.55 $sql = "INSERT INTO ". BB_SESSIONS . $args;
3.56
4.1 --- a/language/lang_english/lang_main.php Mon Nov 19 09:30:57 2012 +0600
4.2 +++ b/language/lang_english/lang_main.php Mon Nov 19 11:55:39 2012 +0600
4.3 @@ -864,6 +864,8 @@
4.4 $lang['REG_USERS_ONLINE'] = 'Who is online registered users: %d and ';
4.5 $lang['HIDDEN_USERS_ONLINE'] = 'hidden users: %d';
4.6 $lang['GUEST_USERS_ONLINE'] = 'Online Guests: %d';
4.7 +$lang['ONLINE_USERS'] = 'Online %1$d users: %2$d members, %3$d guests and search bots %4$d';
4.8 +$lang['ONLINE_BOTS'] = 'Online search bots';
4.9 $lang['ALL_USERS'] = 'All users:';
4.10 $lang['ONLINE_EXPLAIN'] = 'users active over the past five minutes';
4.11 $lang['LAST_UPDATED'] = 'Last Updated';
5.1 --- a/language/lang_russian/lang_main.php Mon Nov 19 09:30:57 2012 +0600
5.2 +++ b/language/lang_russian/lang_main.php Mon Nov 19 11:55:39 2012 +0600
5.3 @@ -872,6 +872,9 @@
5.4 $lang['REG_USERS_ONLINE'] = 'Сейчас на сайте зарегистрированных пользователей: %d и ';
5.5 $lang['HIDDEN_USERS_ONLINE'] = 'скрытых пользователей: %d';
5.6 $lang['GUEST_USERS_ONLINE'] = 'Сейчас на сайте гостей: %d';
5.7 +$lang['ONLINE_USERS'] = 'Сейчас на форуме %1$d посетителей: %2$d зарегистрированных, %3$d гостей и поисковых ботов %4$d';
5.8 +$lang['ONLINE_BOTS'] = 'Сейчас на сайте поисковых ботов';
5.9 +
5.10 $lang['ALL_USERS'] = 'Всех:';
5.11 $lang['ONLINE_EXPLAIN'] = 'данные за последние пять минут';
5.12 $lang['LAST_UPDATED'] = 'Последнее изменение';
6.1 --- a/templates/default/viewonline.tpl Mon Nov 19 09:30:57 2012 +0600
6.2 +++ b/templates/default/viewonline.tpl Mon Nov 19 11:55:39 2012 +0600
6.3 @@ -18,6 +18,16 @@
6.4 {reg_user_row.USERIP} |
6.5
6.6
6.7 +
6.8 + | {L_ONLINE_BOTS}: {TOTAL_BOTS_ONLINE} |
6.9 +
6.10 +
6.11 +
6.12 + | {bot_user_row.USER} |
6.13 + {bot_user_row.LASTUPDATE_RAW}{bot_user_row.LASTUPDATE} |
6.14 + {bot_user_row.USERIP} |
6.15 +
6.16 +
6.17
6.18
6.19 | {TOTAL_GUEST_USERS_ONLINE} |
7.1 --- a/viewonline.php Mon Nov 19 09:30:57 2012 +0600
7.2 +++ b/viewonline.php Mon Nov 19 11:55:39 2012 +0600
7.3 @@ -25,7 +25,7 @@
7.4 //
7.5 // Get user list
7.6 //
7.7 -$sql = "SELECT u.user_id, u.username, u.user_opt, u.user_rank, s.session_logged_in, s.session_time, s.session_ip
7.8 +$sql = "SELECT u.user_id, u.username, u.user_opt, u.user_rank, s.session_logged_in, s.session_time, s.session_ip, s.bot_name
7.9 FROM ".BB_USERS." u, ".BB_SESSIONS." s
7.10 WHERE u.user_id = s.session_user_id
7.11 AND s.session_time >= ".( TIMENOW - 300 ) . "
7.12 @@ -38,81 +38,130 @@
7.13 $guest_users = 0;
7.14 $registered_users = 0;
7.15 $hidden_users = 0;
7.16 -
7.17 -$reg_counter = 0;
7.18 -$guest_counter = 0;
7.19 +$bots = 0;
7.20 +
7.21 $prev_user = 0;
7.22 $prev_ip = '';
7.23 -
7.24 +
7.25 $user_id = 0;
7.26 -
7.27 +
7.28 while ( $row = DB()->sql_fetchrow($result) )
7.29 {
7.30 - $view_online = false;
7.31 + $view_online = false;
7.32 +
7.33 + if ( $row['session_logged_in'] )
7.34 + {
7.35 + $user_id = $row['user_id'];
7.36 +
7.37 + if ( $user_id != $prev_user )
7.38 + {
7.39 + $username = profile_url($row);
7.40 +
7.41 + if ( bf($row['user_opt'], 'user_opt', 'allow_viewonline') )
7.42 + {
7.43 + $view_online = IS_AM;
7.44 + $hidden_users++;
7.45 +
7.46 + $username = '' . $username . '';
7.47 + }
7.48 + else
7.49 + {
7.50 + $view_online = true;
7.51 + $registered_users++;
7.52 + }
7.53 +
7.54 + $which_counter = 'reg_counter';
7.55 + $which_row = 'reg_user_row';
7.56 + $prev_user = $user_id;
7.57 + }
7.58 + }
7.59 + else if($row['bot_name'])
7.60 + {
7.61 + $username = $row['bot_name'];
7.62 + $view_online = true;
7.63 + $bots++;
7.64 +
7.65 + $which_counter = 'bot_counter';
7.66 + $which_row = 'bot_user_row';
7.67 + }
7.68 + else
7.69 + {
7.70 + if ( $row['session_ip'] != $prev_ip )
7.71 + {
7.72 + $username = $lang['GUEST'];
7.73 + $view_online = true;
7.74 + $guest_users++;
7.75 +
7.76 + $which_counter = 'guest_counter';
7.77 + $which_row = 'guest_user_row';
7.78 + }
7.79 + }
7.80 +
7.81 + $prev_ip = $row['session_ip'];
7.82 + $user_ip = hexdec(substr($prev_ip, 0, 2)) . '.' . hexdec(substr($prev_ip, 2, 2)) . '.' . hexdec(substr($prev_ip, 4, 2)) . '.' . hexdec(substr($prev_ip, 6, 2));
7.83 +
7.84 + if ( $view_online )
7.85 + {
7.86 + $row_class = !($which_counter % 2) ? 'row1' : 'row2';
7.87 +
7.88 + $template->assign_block_vars("$which_row", array(
7.89 + 'ROW_CLASS' => $row_class,
7.90 + 'USER' => $username,
7.91 + 'LASTUPDATE' => bb_date($row['session_time']),
7.92 + 'LASTUPDATE_RAW' => $row['session_time'],
7.93 + 'USERIP' => $user_ip,
7.94 + 'U_WHOIS_IP' => $bb_cfg['whois_info'] . $user_ip,
7.95 + ));
7.96 +
7.97 + $which_counter++;
7.98 + }
7.99 +}
7.100 +
7.101 +if( $registered_users == 0 )
7.102 +{
7.103 + $l_r_user_s = $lang['REG_USERS_ONLINE'];
7.104 +}
7.105 +else if( $registered_users == 1 )
7.106 +{
7.107 + $l_r_user_s = $lang['REG_USER_ONLINE'];
7.108 +}
7.109 +else
7.110 +{
7.111 + $l_r_user_s = $lang['REG_USERS_ONLINE'];
7.112 +}
7.113 +
7.114 +if( $hidden_users == 0 )
7.115 +{
7.116 + $l_h_user_s = $lang['HIDDEN_USERS_ONLINE'];
7.117 +}
7.118 +else if( $hidden_users == 1 )
7.119 +{
7.120 + $l_h_user_s = $lang['HIDDEN_USERS_ONLINE'];
7.121 +}
7.122 +else
7.123 +{
7.124 + $l_h_user_s = $lang['HIDDEN_USERS_ONLINE'];
7.125 +}
7.126 +
7.127 +if( $guest_users == 0 )
7.128 +{
7.129 + $l_g_user_s = $lang['GUEST_USERS_ONLINE'];
7.130 +}
7.131 +else if( $guest_users == 1 )
7.132 +{
7.133 + $l_g_user_s = $lang['GUEST_USER_ONLINE'];
7.134 +}
7.135 +else
7.136 +{
7.137 + $l_g_user_s = $lang['GUEST_USERS_ONLINE'];
7.138 +}
7.139 +
7.140 +$template->assign_vars(array(
7.141 + 'TOTAL_USERS_ONLINE' => $l_r_user_s + $registered_users + $l_h_user_s + $hidden_users + $l_g_user_s + $guest_users,
7.142 + 'TOTAL_REGISTERED_USERS_ONLINE' => sprintf($l_r_user_s, $registered_users) . sprintf($l_h_user_s, $hidden_users),
7.143 + 'TOTAL_GUEST_USERS_ONLINE' => sprintf($l_g_user_s, $guest_users),
7.144 + 'TOTAL_BOTS_ONLINE' => $bots,
7.145 +));
7.146
7.147 - if ( $row['session_logged_in'] )
7.148 - {
7.149 - $user_id = $row['user_id'];
7.150 -
7.151 - if ( $user_id != $prev_user )
7.152 - {
7.153 - $username = profile_url($row);
7.154 -
7.155 - if ( bf($row['user_opt'], 'user_opt', 'allow_viewonline') )
7.156 - {
7.157 - $view_online = IS_AM;
7.158 - $hidden_users++;
7.159 -
7.160 - $username = '' . $username . '';
7.161 - }
7.162 - else
7.163 - {
7.164 - $view_online = true;
7.165 - $registered_users++;
7.166 - }
7.167 -
7.168 - $which_counter = 'reg_counter';
7.169 - $which_row = 'reg_user_row';
7.170 - $prev_user = $user_id;
7.171 - }
7.172 - }
7.173 - else
7.174 - {
7.175 - if ( $row['session_ip'] != $prev_ip )
7.176 - {
7.177 - $username = $lang['GUEST'];
7.178 - $view_online = true;
7.179 - $guest_users++;
7.180 -
7.181 - $which_counter = 'guest_counter';
7.182 - $which_row = 'guest_user_row';
7.183 - }
7.184 - }
7.185 -
7.186 - $prev_ip = $row['session_ip'];
7.187 - $user_ip = hexdec(substr($prev_ip, 0, 2)) . '.' . hexdec(substr($prev_ip, 2, 2)) . '.' . hexdec(substr($prev_ip, 4, 2)) . '.' . hexdec(substr($prev_ip, 6, 2));
7.188 -
7.189 - if ( $view_online )
7.190 - {
7.191 - $row_class = !($which_counter % 2) ? 'row1' : 'row2';
7.192 -
7.193 - $template->assign_block_vars("$which_row", array(
7.194 - 'ROW_CLASS' => $row_class,
7.195 - 'USER' => $username,
7.196 - 'LASTUPDATE' => bb_date($row['session_time']),
7.197 - 'LASTUPDATE_RAW' => $row['session_time'],
7.198 - 'USERIP' => $user_ip,
7.199 - 'U_WHOIS_IP' => $bb_cfg['whois_info'] . $user_ip,
7.200 - ));
7.201 -
7.202 - $which_counter++;
7.203 - }
7.204 -}
7.205 -
7.206 -$template->assign_vars(array(
7.207 - 'TOTAL_USERS_ONLINE' => $registered_users + $hidden_users + $guest_users,
7.208 - 'TOTAL_REGISTERED_USERS_ONLINE' => sprintf($lang['REG_USERS_ONLINE'], $registered_users) . sprintf($lang['HIDDEN_USERS_ONLINE'], $hidden_users),
7.209 - 'TOTAL_GUEST_USERS_ONLINE' => sprintf($lang['GUEST_USERS_ONLINE'], $guest_users))
7.210 -);
7.211
7.212 print_page('viewonline.tpl');