<?php
/**
* cat-browser-info.inc.php (file della classe per identificare i dati del browser e sistema operativo)
*
* +----------------------------------------------------------------------+
* |                                                                      |
* | web-system 2.1 : Web Site Management System                          |
* |                                                                      |
* +----------------------------------------------------------------------+
* | Copyright (c) davcaffa@gmail.com                                     |
* +----------------------------------------------------------------------+
* | Authors: Davide Caffaratti <davcaffa@gmail.com>                      |
* |                                                                      |
* +----------------------------------------------------------------------+
*
*/

/**
* Classe per identificare nome del browser, versione ed eventualmente, il sistema operativo
*
* @package Cat_Browser_Info
* @author Davide Caffaratti <davcaffa@gmail.com>
* @version 1.0
*/
class Cat_Browser_Info 
{        
    
/**
    * Return the user agent datas in an array
    * 
    * @param boolean $usePlatform  If set to true return the platform name to
    * @param string  $userAgent    The user user agent (default $_SERVER['HTTP_USER_AGENT'])
    * 
    * @return array
    * 
    * @example: 
    * $browser = Cat_Browser_Info::get(true);
    * echo var_dump($browser);
    * Il seguente esempio ritorna 
    * array(4) { ["name"]=>  string(6) "safari" ["version"]=>  float(525.2) ["platform"]=>  string(8) "mac os x" ["userAgent"]=>  string(123) "mozilla/5.0 (macintosh; u; intel mac os x 10_5_3; en-us) applewebkit/525.18 (khtml, like gecko) version/3.1.1 safari/525.20" }
    */
    
public static function get($usePlatform=false$userAgent=''
    {            
        
$datas = array(
        
'name'=>'unknown',
        
'version'=>0.0,
        
'platform'=>'unknown',
        
'userAgent'=>$userAgent
        
); 
                     
        if (empty(
$userAgent)) {
            if (!isset(
$_SERVER['HTTP_USER_AGENT'])) {
                return 
$datas;    
            }
            else {
                
$userAgent strtolower($_SERVER['HTTP_USER_AGENT']);    
            }   
        }   
                  
        
$browsers = array("firefox""opera""netscape""msie""chrome""safari""mozilla""seamonkey""konqueror""gecko""navigator""mosaic""lynx""amaya""omniweb""avant""camino""flock""aol");
        
        foreach(
$browsers as $browser) {
            if (
preg_match("#".$browser."[/ ]?([0-9.]*)#"$userAgent$match)) {
                
$datas['name'] = $browser;
                
// setto minor version
                
$tmp explode('.'$match[1]);
                
$datas['version'] = floatval($tmp[0].(isset($tmp[1]) ? '.'.$tmp[1] : '')); 
                break ;
            }
        }
        
        if (
$usePlatform) {
            
$datas['platform'] = self::platform($userAgent);    
        }
        
        return 
$datas;
    }
    
/**
    * Prende il nome della piattaforma utilizzata
    * 
    * @param string $userAgent  The user user agent (default $_SERVER['HTTP_USER_AGENT'])
    * @return string
    */
    
public static function platform($userAgent='')
    {            
        if (empty(
$userAgent)) {
            if (!isset(
$_SERVER['HTTP_USER_AGENT'])) {
                return 
$datas;    
            }
            else {
                
$userAgent strtolower($_SERVER['HTTP_USER_AGENT']);    
            }   
        }       
        
        if (
strstr($userAgent'linux') !== false) {
            
$platform 'linux';
        }
        else if (
strstr($userAgent'mac os x') !== false) {
            
$platform 'mac os x';
        }
        else if (
strstr($userAgent'macintosh') !== false) {
            
$platform 'macintosh';
        }
        else if (
strstr($userAgent'windows') !== false || strstr($userAgent'win') !== false) {
            
$platform 'windows';
        }        
        elseif (
strstr($userAgent'iphone') !== false){
            
$platform "iphone";
        } 
        else if (
strstr($userAgent'freebsd') !== false) {
            
$platform 'freebsd';
        }
        else if (
strstr($userAgent'symbian') !== false) {
            
$platform 'symbian';
        }
        else {
            
$platform 'unknown';
        }
        return 
$platform;
    }
}   
?>