Login   Register  
PHP Classes
elePHPant
Icontem

File: googledancer.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Setec Astronomy  >  Google Dancer  >  googledancer.class.php  >  Download  
File: googledancer.class.php
Role: Class source
Content type: text/plain
Description: Class file
Class: Google Dancer
Check whether Google is updating their index
Author: By
Last change: Bug fixes
Date: 10 years ago
Size: 8,598 bytes
 

Contents

Class file image Download
<?php 
/**
* This file contains the googledancer class that checks if Google is "dancing".
*
* @package googledancer
*/

/**
* googledancer class
*
* This class allows to check if Google is "dancing".
*
* @package googledancer
* @author Setec Astronomy
* @version 1.0
* @abstract Check if Google. is "dancing".
* @copyright 2004
* @example sample.php A sample code.
* @link http://setecastronomy.stufftoread.com
*/
class googledancer {
    
    
/**
     * @access private
    */
    
var $main_server '';
    
/**
     * @access private
    */
    
var $alt_servers = array ();
    
/**
     * @access private
    */
    
var $domains = array ();
    
    
/**
    * Default constructor
    *
    * This is the default constructor of googledancer class.
    */
    // public function __construct ()
    
function googledancer () {
        if (!
function_exists ('fsockopen')) {
            die (
'googledancer class needs the fsockopen function!');
        }
        
$this->main_server 'www.google.com';
        
$this->alt_servers = array ('www.google.ch''www.google.at');
        
$this->domains = array ('yahoo.com''cnn.com''amazon.com');
    }
    
    
/**
     * @access private
    */
    // private safe_set (&$var_true, $var_false = '') {
    
function safe_set (&$var_true$var_false '') {
        if (!isset (
$var_true)) { 
            
$var_true $var_false
        }
        return 
$var_true;
    }

    
/**
     * @access private
    */
    // private queryHTTP ($url, $timeout = 10) {
    
function queryHTTP ($url$timeout 10) {
        
$parsed parse_url ($url);
        
$this->safe_set ($parsed['host']);
        
$this->safe_set ($parsed['port'], 80);
        
$this->safe_set ($parsed['path']);
        
$this->safe_set ($parsed['query']);
        
$fp fsockopen ($parsed['host'], $parsed['port'], $errno$errstr$timeout); 
        if (
$fp !== false) { 
            
fputs ($fp"GET " $parsed['path'] . "?" $parsed['query'] . " HTTP/1.0\r\n"); 
            
fputs ($fp"Accept: */*\r\n"); 
            
fputs ($fp"Referer: http://setecastronomy.stufftoread.com/\r\n"); 
            
fputs ($fp"Accept-Language: en\r\n"); 
            
fputs ($fp"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n"); 
            
fputs ($fp"Host: " $parsed['host'] . "\r\n"); 
            
fputs($fp"Connection: close\r\n\r\n");
            
$result '';
            while (!
feof ($fp)) { 
                
$result .= fgets ($fp128); 
            } 
              
fclose ($fp); 
            return 
$result;
        } 
        return 
false;
    }
    
    
/**
    * The getBackLinks method
    *
    * This method returns an array with the backlinks count about some important websites.
    * @param integer $timeout the timeout value used in the fsockopen function.
    * @return mixed it returns an array or false if it fails
    */
    // public function getBackLinks ($timeout = 10) {
    
function getBackLinks ($timeout 10) {
        
$result = array ();
        
$servers[] = $this->main_server;
        
$servers array_merge ($servers$this->alt_servers);
        foreach (
$this->domains as $domain) {
            foreach (
$servers as $server) {
                
$url 'http://' $server '/search?hl=en&ie=UTF-8&q=link%3A' urlencode ($domain);
                
$content $this->queryHTTP ($url);
                if (
$content !== false) {
                    if (
preg_match ('/ of about <b>([\d,]*?)<\/b> linking /si'$content$matches)) {
                        
$result[$domain][$server] = str_replace (','''$matches[1]);
                    } else {
                        
$result[$domain][$server] = 0;
                    }    
                }
            }
        }
        return 
$result;
    }

    
/**
    * The analizeBackLinks method
    *
    * This method analyse the {@link googledancer::getBackLinks() googledancer::getBackLinks()} return value and 
    * returns a float with the percentage probability that Google is dancing.
    * @param array $results {@link googledancer::getBackLinks() googledancer::getBackLinks()} return value
    * @return mixed it returns a float value with the percentage or false if it fails
    */
    
function analizeBackLinks ($results) {
        if (!
is_array ($results)) {
            return 
false;
        }
        
$diff_count 0;
        foreach (
$results as $domain => $values) {
            if (
is_array ($values) && isset ($values[$this->main_server])) {
                foreach (
$this->alt_servers as $server) {
                    if (isset (
$values[$server]) && is_numeric ($values[$server]) && ($values[$server] > 0)) {
                        
$diff_count += abs ($values[$this->main_server] - $values[$server]) / $values[$server];
                    } else {
                        return 
false;
                    }
                }
            } else {
                return 
false;
            }
        }
        return 
$diff_count 100;
    }

    
/**
    * The getIndexedPages method
    *
    * This method returns an array with the indexed pages count about some important websites.
    * @param integer $timeout the timeout value used in the fsockopen function.
    * @return mixed it returns an array or false if it fails
    */
    // public function getIndexedPages ($timeout = 10) {
    
function getIndexedPages ($timeout 10) {
        
$result = array ();
        
$servers[] = $this->main_server;
        
$servers array_merge ($servers$this->alt_servers);
        foreach (
$this->domains as $domain) {
            foreach (
$servers as $server) {
                
$url 'http://' $server '/search?hl=en&ie=UTF-8&q=site%3A' urlencode ($domain);
                
$content $this->queryHTTP ($url);
                if (
$content !== false) {
                    if (
preg_match ('/ of about <b>([\d,]*?)<\/b> from /si'$content$matches)) {
                        
$result[$domain][$server] = str_replace (','''$matches[1]);
                    } else {
                        
$result[$domain][$server] = 0;
                    }    
                }
            }
        }
        return 
$result;
    }

    
/**
    * The analizeIndexedPages method
    *
    * This method analyse the {@link googledancer::getIndexedPages() googledancer::getIndexedPages()} return value and 
    * returns a float with the percentage probability that Google is dancing.
    * @param array $results {@link googledancer::getIndexedPages() googledancer::getIndexedPages()} return value
    * @return mixed it returns a float value with the percentage or false if it fails
    */
    
function analizeIndexedPages ($results) {
        if (!
is_array ($results)) {
            return 
false;
        }
        
$diff_count 0;
        foreach (
$results as $domain => $values) {
            if (
is_array ($values) && isset ($values[$this->main_server])) {
                foreach (
$this->alt_servers as $server) {
                    if (isset (
$values[$server]) && is_numeric ($values[$server]) && ($values[$server] > 0)) {
                        
$diff_count += abs ($values[$this->main_server] - $values[$server]) / $values[$server];
                    } else {
                        return 
false;
                    }
                }
            } else {
                return 
false;
            }
        }
        return 
$diff_count 100;
    }
    
    
/**
    * The getResults method
    *
    * This method returns an array with the results of the given query.
    * @param string $keywords the keyword used for the query.
    * @param integer $resultcount the number fo results to grab (10, 20, 50, 100).
    * @param integer $timeout the timeout value used in the fsockopen function.
    * @return mixed it returns an array or false if it fails
    */
    
function getResults ($keywords ''$resultcount 10$timeout 10) {
        
$result = array ();
        
$servers[] = $this->main_server;
        
$servers array_merge ($servers$this->alt_servers);
        foreach (
$servers as $server) {
            
$url 'http://' $server '/search?hl=en&ie=UTF-8&q=' urlencode ($keywords);
            
$content $this->queryHTTP ($url);
            if (
$content !== false) {
                if (
preg_match_all ('/<p class=g><a href=(.*?) /si'$content$matches)) {
                    
$result[$server] = $matches[1];
                } else {
                    
$result[$server] = array ();
                }    
            }
        }
        return 
$result;
    }
    
    
/**
    * The analizeResults method
    *
    * This method analyse the {@link googledancer::getResults() googledancer::getResults()} return value and 
    * returns a float with the percentage probability that Google is dancing.
    * @param array $results {@link googledancer::getResults() googledancer::getResults()} return value
    * @return mixed it returns a float value with the percentage or false if it fails
    */
    
function analizeResults ($results) {
        if (!
is_array ($results) || !isset ($results[$this->main_server])) {
            return 
false;
        }
        
$result_count 0;
        
$diff_result_count 0;
        
$diff_index_count 0;
        foreach (
$this->alt_servers as $server) {
            if (isset (
$results[$server])) {
                
$diff_result_count += count ($results[$server]) - count (array_intersect ($results[$this->main_server], $results[$server]));
                
$diff_index_count += count ($results[$server]) - count (array_intersect_assoc ($results[$this->main_server], $results[$server]));
                
$result_count += count ($results[$server]) * 2;
            } else {
                return 
false;
            }
        }        
        if (
$result_count == 0) {
            
$result 0;
        } else {
            
$result = ($diff_result_count $diff_index_count) / $result_count 100;
        }
        return 
$result;
    }
}
?>