📄 online.php
字号:
<?php/* Copyright (C) 2003-2005 UseBB Team http://www.usebb.net $Header: /cvsroot/usebb/UseBB/online.php,v 1.31 2005/08/13 11:36:09 pc_freak Exp $ This file is part of UseBB. UseBB is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. UseBB is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with UseBB; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/define('INCLUDED', true);define('ROOT_PATH', './');//// Include usebb engine//require(ROOT_PATH.'sources/common.php');$session->update('onlinelist');//// Include the page header//require(ROOT_PATH.'sources/page_head.php');if ( !$functions->get_config('enable_detailed_online_list') ) { $functions->redirect('index.php'); } elseif ( $functions->get_user_level() < $functions->get_config('view_detailed_online_list_min_level') ) { $functions->redir_to_login(); } else { $min_updated = time() - ( $functions->get_config('online_min_updated') * 60 ); $result = $db->query("SELECT s.user_id, s.ip_addr, s.updated, s.location, u.displayed_name, u.level, u.hide_from_online_list FROM ".TABLE_PREFIX."sessions s LEFT JOIN ".TABLE_PREFIX."members u ON u.id = s.user_id WHERE s.updated > ".$min_updated." ORDER BY s.updated DESC"); $ids = $names = array( 'forums' => array(), 'topics' => array(), 'posts' => array(), 'users' => array() ); $sessions = $seen_members = $seen_ips = array(); while ( $sessiondata = $db->fetch_result($result) ) { if ( $sessiondata['hide_from_online_list'] && $functions->get_user_level() < LEVEL_ADMIN ) continue; if ( $sessiondata['user_id'] && in_array($sessiondata['user_id'], $seen_members) ) continue; if ( !$sessiondata['user_id'] && in_array($sessiondata['ip_addr'], $seen_ips) ) continue; $sessions[] = $sessiondata; if ( $sessiondata['user_id'] ) $seen_members[] = $sessiondata['user_id']; else $seen_ips[] = $sessiondata['ip_addr']; } // // Get page number // $numpages = ceil(intval(count($sessions)) / $functions->get_config('members_per_page')); $page = ( !empty($_GET['page']) && valid_int($_GET['page']) && intval($_GET['page']) <= $numpages ) ? intval($_GET['page']) : 1; $limit_start = ( $page - 1 ) * $functions->get_config('members_per_page'); $limit_end = $functions->get_config('members_per_page'); $page_links = $functions->make_page_links($numpages, $page, count($sessions), $functions->get_config('members_per_page'), 'online.php'); $i = 0; foreach ( $sessions as $key => $sessiondata ) { $i++; if ( $i <= $limit_start || $i > ( $limit_start+$limit_end ) ) { unset($sessions[$key]); continue; } $element = ''; if ( preg_match('#^(forum|posttopic):([0-9]+)$#', $sessiondata['location'], $matches) ) $element = 'forums'; elseif ( preg_match('#^(topic|reply|movetopic|deletetopic):([0-9]+)$#', $sessiondata['location'], $matches) ) $element = 'topics'; elseif ( preg_match('#^(editpost|deletepost):([0-9]+)$#', $sessiondata['location'], $matches) ) $element = 'posts'; elseif ( preg_match('#^(profile|sendemail):([0-9]+)$#', $sessiondata['location'], $matches) ) $element = 'users'; if ( !empty($element) ) $ids[$element][] = $matches[2]; } if ( count($ids['forums']) ) { $result = $db->query("SELECT id, name, auth FROM ".TABLE_PREFIX."forums WHERE id IN(".join(', ', $ids['forums']).")"); while ( $forumdata = $db->fetch_result($result) ) { if ( $functions->auth($forumdata['auth'], 'view', $forumdata['id']) ) $names['forums'][$forumdata['id']] = $forumdata['name']; } } if ( count($ids['topics']) ) { $result = $db->query("SELECT t.id, t.topic_title, t.forum_id, f.auth FROM ".TABLE_PREFIX."topics t, ".TABLE_PREFIX."forums f WHERE t.id IN(".join(', ', $ids['topics']).") AND f.id = t.forum_id"); while ( $topicdata = $db->fetch_result($result) ) { if ( $functions->auth($topicdata['auth'], 'view', $topicdata['forum_id']) ) $names['topics'][$topicdata['id']] = $topicdata['topic_title']; } } if ( count($ids['posts']) ) { $result = $db->query("SELECT p.id, t.topic_title, t.forum_id, f.auth FROM ".TABLE_PREFIX."topics t, ".TABLE_PREFIX."posts p, ".TABLE_PREFIX."forums f WHERE p.id IN(".join(', ', $ids['posts']).") AND t.id = p.topic_id AND f.id = t.forum_id"); while ( $topicdata = $db->fetch_result($result) ) { if ( $functions->auth($topicdata['auth'], 'view', $topicdata['forum_id']) ) $names['posts'][$topicdata['id']] = $topicdata['topic_title']; } } if ( count($ids['users']) ) { $result = $db->query("SELECT id, displayed_name FROM ".TABLE_PREFIX."members WHERE id IN(".join(', ', $ids['users']).")"); while ( $userdata = $db->fetch_result($result) ) $names['users'][$userdata['id']] = $userdata['displayed_name']; } $template->set_page_title($lang['DetailedOnlineList']); $template->parse('header', 'onlinelist', array( 'page_links' => $page_links )); foreach ( $sessions as $sessiondata ) { if ( $sessiondata['user_id'] ) { if ( !$sessiondata['hide_from_online_list'] ) { $username = $functions->make_profile_link($sessiondata['user_id'], $sessiondata['displayed_name'], $sessiondata['level']); } else { $username = '<em>'.$functions->make_profile_link($sessiondata['user_id'], $sessiondata['displayed_name'], $sessiondata['level']).'</em>'; } } else { $username = $lang['Guest']; } if ( $functions->get_user_level() == LEVEL_ADMIN ) $username .= ' (<a href="'.$functions->make_url('admin.php', array('act' => 'iplookup', 'ip' => $sessiondata['ip_addr'])).'"><em>'.$sessiondata['ip_addr'].'</em></a>)'; switch ( $sessiondata['location'] ) { case 'index': $location = '<a href="'.$functions->make_url('index.php').'">'.$lang['ForumIndex'].'</a>'; break; case 'panel_home': $location = $lang['PanelHome']; break; case 'editprofile': $location = $lang['EditProfile']; break; case 'editoptions': $location = $lang['EditOptions']; break; case 'editpwd': $location = $lang['EditPasswd']; break; case 'subscriptions': $location = $lang['Subscriptions']; break; case 'faq': $location = '<a href="'.$functions->make_url('faq.php').'">'.$lang['FAQ'].'</a>'; break; case 'search': $location = '<a href="'.$functions->make_url('search.php').'">'.$lang['Search'].'</a>'; break; case 'activetopics': $location = '<a href="'.$functions->make_url('active.php').'">'.$lang['ActiveTopics'].'</a>'; break; case 'login': $location = $lang['LogIn']; break; case 'logout': $location = $lang['LogOut']; break; case 'register': $location = $lang['Register']; break; case 'activate': $location = $lang['Activate']; break; case 'sendpwd': $location = $lang['SendPassword']; break; case 'onlinelist': $location = $lang['DetailedOnlineList']; break; case 'memberlist': $location = '<a href="'.$functions->make_url('members.php').'">'.$lang['MemberList'].'</a>'; break; case 'stafflist': $location = '<a href="'.$functions->make_url('members.php', array('act' => 'staff')).'">'.$lang['StaffList'].'</a>'; break; case 'rss': $location = '<a href="'.$functions->make_url('rss.php').'">'.$lang['RSSFeed'].'</a>'; break; case 'stats': $location = '<a href="'.$functions->make_url('stats.php').'">'.$lang['Statistics'].'</a>'; break; } if ( empty($location) ) { if ( preg_match('#^forum:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['forums']) ) $location = sprintf($lang['ViewingForum'], '<a href="'.$functions->make_url('forum.php', array('id' => $matches[1])).'">'.unhtml(stripslashes($names['forums'][$matches[1]])).'</a>'); elseif ( preg_match('#^posttopic:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['forums']) ) $location = sprintf($lang['PostingTopic'], '<a href="'.$functions->make_url('forum.php', array('id' => $matches[1])).'">'.unhtml(stripslashes($names['forums'][$matches[1]])).'</a>'); elseif ( preg_match('#^topic:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['topics']) ) $location = sprintf($lang['ViewingTopic'], '<a href="'.$functions->make_url('topic.php', array('id' => $matches[1])).'">'.unhtml($functions->replace_badwords(stripslashes($names['topics'][$matches[1]]))).'</a>'); elseif ( preg_match('#^reply:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['topics']) ) $location = sprintf($lang['PostingReply'], '<a href="'.$functions->make_url('topic.php', array('id' => $matches[1])).'">'.unhtml($functions->replace_badwords(stripslashes($names['topics'][$matches[1]]))).'</a>'); elseif ( preg_match('#^movetopic:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['topics']) ) $location = sprintf($lang['MovingTopic'], '<a href="'.$functions->make_url('topic.php', array('id' => $matches[1])).'">'.unhtml($functions->replace_badwords(stripslashes($names['topics'][$matches[1]]))).'</a>'); elseif ( preg_match('#^deletetopic:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['topics']) ) $location = sprintf($lang['DeletingTopic'], '<a href="'.$functions->make_url('topic.php', array('id' => $matches[1])).'">'.unhtml($functions->replace_badwords(stripslashes($names['topics'][$matches[1]]))).'</a>'); elseif ( preg_match('#^editpost:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['posts']) ) $location = sprintf($lang['EditingPost'], '<a href="'.$functions->make_url('topic.php', array('post' => $matches[1])).'#post'.$matches[1].'">'.unhtml($functions->replace_badwords(stripslashes($names['posts'][$matches[1]]))).'</a>'); elseif ( preg_match('#^deletepost:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['posts']) ) $location = sprintf($lang['DeletingPost'], '<a href="'.$functions->make_url('topic.php', array('post' => $matches[1])).'#post'.$matches[1].'">'.unhtml($functions->replace_badwords(stripslashes($names['posts'][$matches[1]]))).'</a>'); elseif ( preg_match('#^profile:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['users']) ) $location = sprintf($lang['Profile'], '<a href="'.$functions->make_url('profile.php', array('id' => $matches[1])).'">'.unhtml(stripslashes($names['users'][$matches[1]])).'</a>'); elseif ( preg_match('#^sendemail:([0-9]+)$#', $sessiondata['location'], $matches) && array_key_exists($matches[1], $names['users']) ) $location = sprintf($lang['SendEmail'], '<a href="'.$functions->make_url('profile.php', array('id' => $matches[1])).'">'.unhtml(stripslashes($names['users'][$matches[1]])).'</a>'); else $location = $lang['Unknown']; } $template->parse('user', 'onlinelist', array( 'username' => $username, 'current_page' => $location, 'latest_update' => $functions->make_date($sessiondata['updated'], 'h:i:s a'), )); unset($location); } $template->parse('footer', 'onlinelist', array( 'page_links' => $page_links )); }//// Include the page footer//require(ROOT_PATH.'sources/page_foot.php');?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -