useronline = $table_prefix . 'useronline';
### Function: WP-UserOnline Menu
add_action('admin_menu', 'useronline_menu');
function useronline_menu() {
if (function_exists('add_submenu_page')) {
add_submenu_page('index.php', __('WP-UserOnline', 'wp-useronline'), __('WP-UserOnline', 'wp-useronline'), 1, 'useronline/useronline.php', 'display_useronline');
}
if (function_exists('add_options_page')) {
add_options_page(__('Useronline', 'wp-useronline'), __('Useronline', 'wp-useronline'), 'manage_options', 'useronline/useronline-options.php');
}
}
### Function: Displays UserOnline Header
add_action('wp_head', 'useronline_header');
function useronline_header() {
echo "\n".''."\n";
wp_register_script('wp-useronline', '/wp-content/plugins/useronline/useronline-js.php', false, '2.10');
wp_print_scripts(array('sack', 'wp-useronline'));
echo ''."\n";
}
### Function: Process UserOnline
add_action('admin_head', 'useronline');
add_action('wp_head', 'useronline');
function useronline() {
global $wpdb, $useronline;
// Useronline Settings
$timeoutseconds = get_option('useronline_timeout');
$timestamp = current_time('timestamp');
$timeout = ($timestamp-$timeoutseconds);
$ip = get_ipaddress();
$url = addslashes(urlencode($_SERVER['REQUEST_URI']));
$useragent = $_SERVER['HTTP_USER_AGENT'];
$current_user = wp_get_current_user();
// Check For Bot
$bots = get_option('useronline_bots');
foreach ($bots as $name => $lookfor) {
if (stristr($useragent, $lookfor) !== false) {
$user_id = 0;
$display_name = addslashes($name);
$user_name = addslashes($lookfor);
$type = 'bot';
$where = "WHERE ip = '$ip'";
$bot_found = true;
break;
}
}
// If No Bot Is Found, Then We Check Members And Guests
if(!$bot_found) {
// Check For Member
if($current_user->ID > 0) {
$user_id = $current_user->ID;
$display_name = addslashes($current_user->display_name);
$user_name = addslashes($current_user->user_login);
$type = 'member';
$where = "WHERE userid = '$user_id'";
// Check For Comment Author (Guest)
} elseif(!empty($_COOKIE['comment_author_'.COOKIEHASH])) {
$user_id = 0;
$display_name = addslashes(trim($_COOKIE['comment_author_'.COOKIEHASH]));
$user_name = __('guest', 'wp-useronline').'_'.$display_name;
$type = 'guest';
$where = "WHERE ip = '$ip'";
// Check For Guest
} else {
$user_id = 0;
$display_name = __('Guest', 'wp-useronline');
$user_name = "guest";
$type = 'guest';
$where = "WHERE ip = '$ip'";
}
}
// Get User Agent
$useragent = addslashes($useragent);
// Check For Page Title
$make_page = wp_title('»', false);
if(empty($make_page)) {
$make_page = get_bloginfo('name');
} elseif(is_single()) {
$make_page = get_bloginfo('name').' » '.__('Blog Archive', 'wp-useronline').' '.$make_page;
} else {
$make_page = get_bloginfo('name').$make_page;
}
$make_page = addslashes($make_page);
// Delete Users
$delete_users = $wpdb->query("DELETE FROM $wpdb->useronline $where OR (timestamp < $timeout)");
// Insert Users
$insert_user = $wpdb->query("INSERT INTO $wpdb->useronline VALUES ('$timestamp', '$user_id', '$user_name', '$display_name', '$useragent', '$ip', '$make_page', '$url', '$type')");
// Count Users Online
$useronline = intval($wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline"));
// Get Most User Online
$most_useronline = intval(get_option('useronline_most_users'));
// Check Whether Current Users Online Is More Than Most Users Online
if($useronline > $most_useronline) {
update_option('useronline_most_users', $useronline);
update_option('useronline_most_timestamp', current_time('timestamp'));
}
}
### Function: Display UserOnline
if(!function_exists('get_useronline')) {
function get_useronline($user = '', $users = '', $display = true) {
global $useronline;
if(empty($user)) {
$user = __('User', 'wp-useronline');
}
if(empty($users)) {
$users = __('Users', 'wp-useronline');
}
$useronline_url = get_option('useronline_url');
// Display User Online
if($display) {
if($useronline > 1) {
echo ''.number_format($useronline).' '.$users.' '.__('Online', 'wp-useronline').''."\n";
} else {
echo ''.$useronline.' '.$user.' '.__('Online', 'wp-useronline').''."\n";
}
} else { return number_format($useronline);
}
}
}
### Function: Display Max UserOnline
if(!function_exists('get_most_useronline')) {
function get_most_useronline($display = true) {
$most_useronline_users = intval(get_option('useronline_most_users'));
if($display) {
echo number_format($most_useronline_users);
} else {
return $most_useronline_users;
}
}
}
### Function: Display Max UserOnline Date
if(!function_exists('get_most_useronline_date')) {
function get_most_useronline_date($display = true, $date_format = 'jS F Y, H:i') {
$most_useronline_timestamp = get_option('useronline_most_timestamp');
$most_useronline_date = gmdate($date_format, $most_useronline_timestamp);
if($display) {
echo $most_useronline_date;
} else {
return$most_useronline_date;
}
}
}
### Function: Display Users Browsing The Site
function get_users_browsing_site($display = true) {
global $wpdb;
// Get Users Browsing Site
$page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
$users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline ORDER BY type");
// Variables
$members = array();
$guests = array();
$bots = array();
$total_users = 0;
$total_members = 0;
$total_guests = 0;
$total_bots = 0;
$nicetext_members = '';
$nicetext_guests = '';
$nicetext_bots = '';
// If There Is Users Browsing, Then We Execute
if($users_browse) {
// Get Users Information
foreach($users_browse as $user_browse) {
switch($user_browse->type) {
case 'member':
$members[] = stripslashes($user_browse->displayname);
$total_members++;
break;
case 'guest':
$guests[] = stripslashes($user_browse->displayname);
$total_guests++;
break;
case 'bot':
$bots[] = stripslashes($user_browse->displayname);
$total_bots++;
break;
}
}
$total_users = ($total_guests+$total_bots+$total_members);
// If We Do Not Display It, Return Respective Users Count
if(!$display) {
return array ($total_users, $total_members, $total_guests, $total_bots);
}
// Nice Text For Guests
if($total_guests == 1) {
$nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
} else {
$nicetext_guests = number_format($total_guests).' '.__('Guests', 'wp-useronline');
}
// Nice Text For Bots
if($total_bots == 1) {
$nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
} else {
$nicetext_bots = number_format($total_bots).' '.__('Bots', 'wp-useronline');
}
// Print Member Name
if($members) {
$temp_member = '';
foreach($members as $member) {
$temp_member .= ''.$member.', ';
}
if(!function_exists('get_totalposts')) {
$temp_member = strip_tags($temp_member);
}
}
// Print Guests
if($total_guests > 0) {
$temp_member .= $nicetext_guests.', ';
}
// Print Bots
if($total_bots > 0) {
$temp_member .= $nicetext_bots.', ';
}
// Print User Count
$temp_member = substr($temp_member, 0, -2);
echo __('Users', 'wp-useronline').': '.$temp_member.'
';
} else {
// This Should Not Happen
_e('No User Is Browsing This Site', 'wp-useronline');
}
}
### Function: Display Users Browsing The Page
function get_users_browsing_page($display = true) {
global $wpdb;
// Get Users Browsing Page
$page_url = addslashes(urlencode($_SERVER['REQUEST_URI']));
$users_browse = $wpdb->get_results("SELECT displayname, type FROM $wpdb->useronline WHERE url = '$page_url' ORDER BY type");
// Variables
$members = array();
$guests = array();
$bots = array();
$total_users = 0;
$total_members = 0;
$total_guests = 0;
$total_bots = 0;
$nicetext_members = '';
$nicetext_guests = '';
$nicetext_bots = '';
// If There Is Users Browsing, Then We Execute
if($users_browse) {
// Reassign Bots Name
$bots = get_option('useronline_bots');
$bots_name = array();
foreach($bots as $botname => $botlookfor) {
$bots_name[] = $botname;
}
// Get Users Information
foreach($users_browse as $user_browse) {
switch($user_browse->type) {
case 'member':
$members[] = stripslashes($user_browse->displayname);
$total_members++;
break;
case 'guest':
$guests[] = stripslashes($user_browse->displayname);
$total_guests++;
break;
case 'bot':
$bots[] = stripslashes($user_browse->displayname);
$total_bots++;
break;
}
}
$total_users = ($total_guests+$total_bots+$total_members);
// If We Do Not Display It, Return Respective Users Count
if(!$display) {
return array ($total_users, $total_members, $total_guests, $total_bots);
}
// Nice Text For Members
if($total_members == 1) {
$nicetext_members = $total_members.' '.__('Member', 'wp-useronline');
} else {
$nicetext_members = number_format($total_members).' '.__('Members', 'wp-useronline');
}
// Nice Text For Guests
if($total_guests == 1) {
$nicetext_guests = $total_guests.' '.__('Guest', 'wp-useronline');
} else {
$nicetext_guests = number_format($total_guests).' '.__('Guests', 'wp-useronline');
}
// Nice Text For Bots
if($total_bots == 1) {
$nicetext_bots = $total_bots.' '.__('Bot', 'wp-useronline');
} else {
$nicetext_bots = number_format($total_bots).' '.__('Bots', 'wp-useronline');
}
// Print User Count
echo __('Users Browsing This Page', 'wp-useronline').': '.number_format($total_users).' ('.$nicetext_members.', '.$nicetext_guests.' '.__('and', 'wp-useronline').' '.$nicetext_bots.')
';
// Print Member Name
if($members) {
$temp_member = '';
foreach($members as $member) {
$temp_member .= ''.$member.', ';
}
if(!function_exists('get_totalposts')) {
$temp_member = strip_tags($temp_member);
}
echo __('Members', 'wp-useronline').': '.substr($temp_member, 0, -2);
}
} else {
// This Should Not Happen
_e('No User Is Browsing This Page', 'wp-useronline');
}
}
### Function: Get IP Address
if(!function_exists('get_ipaddress')) {
function get_ipaddress() {
if (empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ip_address = $_SERVER["REMOTE_ADDR"];
} else {
$ip_address = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
if(strpos($ip_address, ',') !== false) {
$ip_address = explode(',', $ip_address);
$ip_address = $ip_address[0];
}
return $ip_address;
}
}
### Function: Check IP
function check_ip($ip) {
$current_user = wp_get_current_user();
$user_level = intval($current_user->wp_user_level);
$ip2long = ip2long($ip);
if($user_level == 10 && ($ip != 'unknown') && $ip == long2ip($ip2long) && $ip2long !== false) {
return "($ip)";
}
}
### Function Check If User Is Online
function is_online($user_login) {
global $wpdb;
$is_online = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->useronline WHERE username = '$user_login' LIMIT 1");
return intval($is_online);
}
### Function: Output User's Country Flag/Name
function ip2nation_country($ip, $display_countryname = 0) {
if(function_exists('wp_ozh_ip2nation')) {
$country_code = wp_ozh_getCountryCode(0, $ip);
$country_name = wp_ozh_getCountryName(0, $ip);
$country_mirror = '';
$mirrors = array("http://frenchfragfactory.net/images", "http://www.lesterchan.net/wordpress/images/flags");
if($country_name != 'Private') {
foreach($mirrors as $mirror) {
if(file($mirror.'/flag_sg.gif')) {
$country_mirror = $mirror;
break;
}
}
$temp = '
';
if($display_countryname) {
$temp .= $country_name;
}
return $temp.' ';
} else {
return;
}
}
return;
}
### Function: Display UserOnline For Admin
function display_useronline() {
$useronline_page = useronline_page();
echo "
'; if ($total_users == 1) { $useronline_output .= __('There is', 'wp-useronline').' '; } else { $useronline_output .= __('There are a total of', 'wp-useronline').' '; } $useronline_output .= "$nicetext_users ".__('online now', 'wp-useronline').": $nicetext_members, $nicetext_guests ".__('and', 'wp-useronline')." $nicetext_bots.
\n"; $useronline_output .= ''.__('Most users ever online were', 'wp-useronline')." ".get_most_useronline(false).", ".__('on', 'wp-useronline')." ".get_most_useronline_date(false)."
\n"; // Print Out Members if($total_members > 0) { $useronline_output .= '#'.$no.' - '.$member['display_name'].' '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $member['timestamp']).'
'.$member['location'].' ['.__('url', 'wp-useronline').']
#'.$no.' - '.$member['user_name'].' '.ip2nation_country($member['ip']).check_ip($member['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $member['timestamp']).'
'.$member['location'].' ['.__('url', 'wp-useronline').']
#'.$no.' - '.$guest['display_name'].' '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $guest['timestamp']).'
'.$guest['location'].' ['.__('url', 'wp-useronline').']
#'.$no.' - '.$guest['user_name'].' '.ip2nation_country($guest['ip']).check_ip($guest['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $guest['timestamp']).'
'.$guest['location'].' ['.__('url', 'wp-useronline').']
#'.$no.' - '.$bot['display_name'].' '.check_ip($bot['ip']).' '.__('on', 'wp-useronline').' '.gmdate('d.m.Y @ H:i', $bot['timestamp']).'
'.$bot['location'].' ['.__('url', 'wp-useronline').']