Example #1
0
 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')));
     }
 }
Example #2
0
	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' )
			) );
	}