function _useronline_init() { load_plugin_textdomain('wp-useronline', '', dirname(plugin_basename(__FILE__)) . '/lang'); require_once dirname(__FILE__) . '/core.php'; require_once dirname(__FILE__) . '/template-tags.php'; require_once dirname(__FILE__) . '/deprecated.php'; require_once dirname(__FILE__) . '/widget.php'; new scbTable('useronline', __FILE__, "\n\t\ttimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,\n\t\tuser_type varchar( 20 ) NOT NULL default 'guest',\n\t\tuser_id bigint( 20 ) NOT NULL default 0,\n\t\tuser_name varchar( 250 ) NOT NULL default '',\n\t\tuser_ip varchar( 39 ) NOT NULL default '',\n\t\tuser_agent text NOT NULL,\n\t\tpage_title text NOT NULL,\n\t\tpage_url varchar( 255 ) NOT NULL default '',\n\t\treferral varchar( 255 ) NOT NULL default '',\n\t\tUNIQUE KEY useronline_id ( timestamp, user_type, user_ip )\n\t", 'delete_first'); $most = new scbOptions('useronline_most', __FILE__, array('count' => 1, 'date' => current_time('timestamp'))); $options = new scbOptions('useronline', __FILE__, array('timeout' => 300, 'url' => trailingslashit(get_bloginfo('url')) . 'useronline', 'names' => false, 'naming' => array('user' => __('1 User', 'wp-useronline'), 'users' => __('%COUNT% Users', 'wp-useronline'), 'member' => __('1 Member', 'wp-useronline'), 'members' => __('%COUNT% Members', 'wp-useronline'), 'guest' => __('1 Guest', 'wp-useronline'), 'guests' => __('%COUNT% Guests', 'wp-useronline'), 'bot' => __('1 Bot', 'wp-useronline'), 'bots' => __('%COUNT% Bots', 'wp-useronline')), 'templates' => array('useronline' => '<a href="%PAGE_URL%"><strong>%USERS%</strong> ' . __('Online', 'wp-useronline') . '</a>', 'browsingsite' => array('separators' => array('members' => __(',', 'wp-useronline') . ' ', 'guests' => __(',', 'wp-useronline') . ' ', 'bots' => __(',', 'wp-useronline') . ' '), 'text' => _x('Users', 'Template Element', 'wp-useronline') . ': <strong>%MEMBER_NAMES%%GUESTS_SEPARATOR%%GUESTS%%BOTS_SEPARATOR%%BOTS%</strong>'), 'browsingpage' => array('separators' => array('members' => __(',', 'wp-useronline') . ' ', 'guests' => __(',', 'wp-useronline') . ' ', 'bots' => __(',', 'wp-useronline') . ' '), 'text' => '<strong>%USERS%</strong> ' . __('Browsing This Page.', 'wp-useronline') . '<br />' . _x('Users', 'Template Element', 'wp-useronline') . ': <strong>%MEMBER_NAMES%%GUESTS_SEPARATOR%%GUESTS%%BOTS_SEPARATOR%%BOTS%</strong>')))); UserOnline_Core::init($options, $most); scbWidget::init('UserOnline_Widget', __FILE__, 'useronline'); if (is_admin()) { require_once dirname(__FILE__) . '/admin.php'; scbAdminPage::register('UserOnline_Admin_Integration', __FILE__); scbAdminPage::register('UserOnline_Options', __FILE__, UserOnline_Core::$options); } if (function_exists('stats_page')) { require_once dirname(__FILE__) . '/wp-stats.php'; } # scbUtil::do_uninstall( __FILE__ ); # scbUtil::do_activation( __FILE__ ); }
static function detailed_list($counts, $user_buckets, $nicetexts) { UserOnline_Core::$add_script = true; if ($counts['user'] == 0) { return html('h2', __('No one is online now.', 'wp-useronline')); } $_on = __('on', 'wp-useronline'); $_url = __('url', 'wp-useronline'); $_referral = __('referral', 'wp-useronline'); $output = ''; foreach (array('member', 'guest', 'bot') as $user_type) { if (!$counts[$user_type]) { continue; } $count = $counts[$user_type]; $users = $user_buckets[$user_type]; $nicetext = $nicetexts[$user_type]; $output .= html('h2', $nicetext . ' ' . __('Online Now', 'wp-useronline')); $i = 1; foreach ($users as $user) { $nr = number_format_i18n($i++); $name = self::format_name($user); $user_ip = self::format_ip($user); $date = self::format_date($user->timestamp, true); if (current_user_can('edit_users') || false === strpos($user->page_url, 'wp-admin')) { $page_title = esc_html($user->page_title); $current_link = self::format_link($user->page_url, $_url); $referral_link = self::format_link($user->referral, $_referral); } $output .= "<p><strong>#{$nr} - {$name}</strong> {$user_ip} {$_on} {$date}<br/>{$page_title} {$current_link} {$referral_link}</p>\n"; } } return $output; }
static function record($page_url = '', $page_title = '') { require_once dirname(__FILE__) . '/bots.php'; global $wpdb; if (empty($page_url)) { $page_url = $_SERVER['REQUEST_URI']; } if (empty($page_title)) { $page_title = self::get_title(); } if (isset($_SERVER['HTTP_REFERER'])) { $referral = strip_tags($_SERVER['HTTP_REFERER']); } else { $referral = ''; } $user_ip = self::get_ip(); if (isset($_SERVER['HTTP_USER_AGENT'])) { $user_agent = strip_tags($_SERVER['HTTP_USER_AGENT']); } else { $user_agent = ''; } $current_user = wp_get_current_user(); // Check For Bot $bots = useronline_get_bots(); $bot_found = false; foreach ($bots as $name => $lookfor) { if (stristr($user_agent, $lookfor) !== false) { $user_id = 0; $user_name = $name; $username = $lookfor; $user_type = 'bot'; $bot_found = true; break; } } // If No Bot Is Found, Then We Check Members And Guests if (!$bot_found) { if ($current_user->ID) { // Check For Member $user_id = $current_user->ID; $user_name = $current_user->display_name; $user_type = 'member'; $where = $wpdb->prepare("WHERE user_id = %d", $user_id); } elseif (!empty($_COOKIE['comment_author_' . COOKIEHASH])) { // Check For Comment Author ( Guest ) $user_id = 0; $user_name = trim(strip_tags($_COOKIE['comment_author_' . COOKIEHASH])); $user_type = 'guest'; } else { // Check For Guest $user_id = 0; $user_name = __('Guest', 'wp-useronline'); $user_type = 'guest'; } } // Current GMT Timestamp $timestamp = current_time('mysql'); // Purge table $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->useronline} WHERE user_ip = %s OR timestamp < DATE_SUB(%s, INTERVAL %d SECOND)", $user_ip, $timestamp, self::$options->timeout)); // Insert Users $data = compact('timestamp', 'user_type', 'user_id', 'user_name', 'user_ip', 'user_agent', 'page_title', 'page_url', 'referral'); $data = stripslashes_deep($data); $wpdb->replace($wpdb->useronline, $data); // Count Users Online self::$useronline = intval($wpdb->get_var("SELECT COUNT( * ) FROM {$wpdb->useronline}")); // Maybe Update Most User Online if (self::$useronline > self::$most->count) { self::$most->update(array('count' => self::$useronline, 'date' => current_time('timestamp'))); } }
function record( $page_url = '', $page_title = '' ) { global $wpdb; if ( empty( $page_url ) ) $page_url = $_SERVER['REQUEST_URI']; if ( empty( $page_title ) ) $page_title = self::get_title(); $referral = strip_tags( @$_SERVER['HTTP_REFERER'] ); $user_ip = self::get_ip(); $user_agent = $_SERVER['HTTP_USER_AGENT']; $current_user = wp_get_current_user(); // Check For Bot $bots = array( 'Google Bot' => 'googlebot', 'Google Bot' => 'google', 'MSN' => 'msnbot', 'Alex' => 'ia_archiver', 'Lycos' => 'lycos', 'Ask Jeeves' => 'jeeves', 'Altavista' => 'scooter', 'AllTheWeb' => 'fast-webcrawler', 'Inktomi' => 'slurp@inktomi', 'Turnitin.com' => 'turnitinbot', 'Technorati' => 'technorati', 'Yahoo' => 'yahoo', 'Findexa' => 'findexa', 'NextLinks' => 'findlinks', 'Gais' => 'gaisbo', 'WiseNut' => 'zyborg', 'WhoisSource' => 'surveybot', 'Bloglines' => 'bloglines', 'BlogSearch' => 'blogsearch', 'PubSub' => 'pubsub', 'Syndic8' => 'syndic8', 'RadioUserland' => 'userland', 'Gigabot' => 'gigabot', 'Become.com' => 'become.com', 'Baidu' => 'baidu', 'Yandex' => 'yandex', 'Amazon' => 'amazonaws.com' ); $bot_found = false; foreach ( $bots as $name => $lookfor ) if ( stristr( $user_agent, $lookfor ) !== false ) { $user_id = 0; $user_name = $name; $username = $lookfor; $user_type = 'bot'; $bot_found = true; break; } // If No Bot Is Found, Then We Check Members And Guests if ( !$bot_found ) { if ( $current_user->ID ) { // Check For Member $user_id = $current_user->ID; $user_name = $current_user->display_name; $user_type = 'member'; $where = $wpdb->prepare( "WHERE user_id = %d", $user_id ); } elseif ( !empty( $_COOKIE['comment_author_'.COOKIEHASH] ) ) { // Check For Comment Author ( Guest ) $user_id = 0; $user_name = trim( strip_tags( $_COOKIE['comment_author_'.COOKIEHASH] ) ); $user_type = 'guest'; } else { // Check For Guest $user_id = 0; $user_name = __( 'Guest', 'wp-useronline' ); $user_type = 'guest'; } } // Purge table $wpdb->query( $wpdb->prepare( " DELETE FROM $wpdb->useronline WHERE user_ip = %s OR timestamp < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL %d SECOND) ", $user_ip, self::$options->timeout ) ); // Insert Users $data = compact( 'user_type', 'user_id', 'user_name', 'user_ip', 'user_agent', 'page_title', 'page_url', 'referral' ); $data = stripslashes_deep( $data ); $insert_user = $wpdb->insert( $wpdb->useronline, $data ); // Count Users Online self::$useronline = intval( $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->useronline" ) ); // Maybe Update Most User Online if ( self::$useronline > self::$most->count ) self::$most->update( array( 'count' => self::$useronline, 'date' => current_time( 'timestamp' ) ) ); }