PHP Classes
elePHPant
Icontem

File: sumatag.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Till Wehowski  >  Suma Tag  >  sumatag.php  >  Download  
File: sumatag.php
Role: Class source
Content type: text/plain
Description: mainclass
Class: Suma Tag
Determine the keywords searched by visitors
Author: By
Last change:
Date: 1 year ago
Size: 3,480 bytes
 

Contents

Class file image Download
<?php

/*
 * SumaTag mainclass
 *
 * @package SumaTag
 * @author Till Wehowski, http://webfan.de
 * @version 1.0.0
 * @License Do What The Fuck You Want To Public License
 * @Requires class wUri http://www.phpclasses.org/package/8005-PHP-Parse-an-URL-and-extract-its-parts.html
 */
 
/*
 Usage:
 
   $st = new SumaTag();
   $keyword = $st->detect();
   var_dump($keyword);
  
*/

class SumaTag
{

 private
$se;
 
 
/* pointer to wURI */
 
private $u;

 function
__construct($defaultSetting = TRUE)
  {
    
$this->u = & wURI::getInstance();
    
$this->se = array();
     if(
$defaultSetting === TRUE)$this->loadDefaults();
  }


 
/*
   Example settings:
               'google', 'q',
               'yahoo', 'p',
               'live', 'q',
               'aolsvc', 'q',
               'bing', 'q',
               'suche.webfan.de', 'q',
               //Test:
               'localhost', 'q',
 */
 
public function loadDefaults()
  {
   
$this->addSe('*.google.*', 'q');
   
$this->addSe('*.yahoo.*', 'p');
   
$this->addSe('*.live.*', 'q');
   
$this->addSe('*.bing.*', 'q');
   
$this->addSe('*.aolsvc.*', 'q');
   
$this->addSe('suche.webfan.de', 'q');
  }

 
/*
    addSe - add search engine
    @param string $host E.g.: 'sub.google.com' OR '*.google.com' OR 'google.*' OR '*.*'
    @param string $kpn - keywordParameterName - The query parameter of the referer url where the search-keyword is found
                                                 e.g. for google it is 'q'
                                                 e.g. for yahoo it is 'p'
  */
 
public function addSe($host, $kpn)
   {
    
$host = trim($host);
    
    
$regex = str_replace('.', '\\.', $host);
     if(
substr($host, 0, 1) !== '*')$regex = '^'.$regex;
     if(
substr($host, -1, 1) !== '*')$regex.= '$';
    
$regex = str_replace('*', '', $regex);
    
    
$this->se[$host] = array(
        
'name' => $host,
        
'regex' => $regex,
        
'kpn' => $kpn,
      );
   }
  

 
/*
    removeSe - remove search engine
    @param string $host
  */
 
public function removeSe($host)
   {
     unset(
$this->se[$host]);
   }
  
  
 
  public function
detect()
   {
     
$u = $this->u->getU();
      return
$this->check($_SERVER['HTTP_REFERER'], $u->location);
   }

 
/*
    check - check for keyword in referer !Returns only the first match!
    @param string $ref - referer url to check
    @param string $loc - url found on your page - OPTIONAL
   
    @return FALSE || array(host, keyword, url)
  */
 
public function check($ref = NULL, $loc = NULL)
   {
    if(
$loc === NULL || parse_url($loc) === FALSE)
     {
      
$u = $this->u->getU();
      
$loc = $u->location;
     }
    if(
$ref === NULL)$ref = strip_tags($_SERVER['HTTP_REFERER']);
   
$ru = parse_url($ref);
    if(
$ref === '' || $ru === FALSE)return FALSE;
   
$r = $this->u->parse_uri($ru['scheme'], $ru['host'], $ru['path'].'?'.$ru['query']);
   
     foreach(
$this->se as $host => $h)
      {
        
$regex = "/".$h['regex']."/";
         if(!
preg_match($regex, $r->server) )continue;
         if(!isset(
$r->query[$h['kpn']]) )continue;
         return array(
          
'host' => $h['name'],
          
'keyword' => trim(urldecode($r->query[$h['kpn']])),
          
'url' => $loc,
         );
      }
   
    return
FALSE;
   }


}
//eof class