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');