From 6ec6589085fb0897060e701249849b60b95ab4cb Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Thu, 14 May 2026 19:50:26 +0100 Subject: package phpsniff for local managment --- includes/phpsniff/index.php | 2 +- includes/phpsniff/phpSniff.class.php | 713 +++++++++++++++++------------------ includes/phpsniff/phpSniff.core.php | 419 ++++++++++---------- 3 files changed, 566 insertions(+), 568 deletions(-) mode change 100644 => 100755 includes/phpsniff/index.php mode change 100644 => 100755 includes/phpsniff/phpSniff.class.php mode change 100644 => 100755 includes/phpsniff/phpSniff.core.php diff --git a/includes/phpsniff/index.php b/includes/phpsniff/index.php old mode 100644 new mode 100755 index 3e305fe..c0437d0 --- a/includes/phpsniff/index.php +++ b/includes/phpsniff/index.php @@ -1,4 +1,4 @@ - */ class phpSniff -{ - +{ + /** * @access private * @var string */ - var $_version = '2.1.4'; - + var $_version = "2.1.4"; + /** * $_temp_file_path * default : /tmp/ @@ -52,8 +52,8 @@ class phpSniff * @access public * @var string */ - var $_temp_file_path = '/tmp/'; // with trailing slash - + var $_temp_file_path = "/tmp/"; // with trailing slash + /** * $_check_cookies * default : null @@ -64,8 +64,8 @@ class phpSniff * @access public * @var string */ - var $_check_cookies = NULL; - + var $_check_cookies = NULL; + /** * $_default_language * default : en-us @@ -73,8 +73,8 @@ class phpSniff * @access public * @var string */ - var $_default_language = 'en-us'; - + var $_default_language = "en-us"; + /** * default : null * Allow for browser to Masquerade as another. (ie: Opera identifies as MSIE 5.0) @@ -82,15 +82,14 @@ class phpSniff * @access public * @var string */ - var $_allow_masquerading = NULL; - + var $_allow_masquerading = NULL; + /** * @access private * @var string */ - var $_php_version = ''; - - + var $_php_version = ""; + /** * 2D Array of browsers we wish to search for in key => value pairs. *
@@ -101,37 +100,37 @@ class phpSniff
      *  @access public
      *  @var array
      */
-    var $_browsers = array(
-        'microsoft internet explorer' => 'IE',
-        'msie'                        => 'IE',
-        'netscape6'                   => 'NS',
-        'netscape'                    => 'NS',
-        'galeon'                      => 'GA',
-        'phoenix'                     => 'PX',
-        'mozilla firebird'            => 'FB',
-        'firebird'                    => 'FB',
-        'firefox'                     => 'FX',
-        'chimera'                     => 'CH',
-        'camino'                      => 'CA',
-        'epiphany'                    => 'EP',
-        'safari'                      => 'SF',
-        'k-meleon'                    => 'KM',
-        'mozilla'                     => 'MZ',
-        'opera'                       => 'OP',
-        'konqueror'                   => 'KQ',
-        'icab'                        => 'IC',
-        'lynx'                        => 'LX',
-		'links'                       => 'LI',					
-        'ncsa mosaic'                 => 'MO',
-        'amaya'                       => 'AM',
-        'omniweb'                     => 'OW',
-		'hotjava'					  => 'HJ',
-        'browsex'                     => 'BX',
-        'amigavoyager'                => 'AV',
-        'amiga-aweb'                  => 'AW',
-        'ibrowse'                     => 'IB'
-		);
-
+    var $_browsers = [
+        "microsoft internet explorer" => "IE",
+        "msie"                        => "IE",
+        "netscape6"                   => "NS",
+        "netscape"                    => "NS",
+        "galeon"                      => "GA",
+        "phoenix"                     => "PX",
+        "mozilla firebird"            => "FB",
+        "firebird"                    => "FB",
+        "firefox"                     => "FX",
+        "chimera"                     => "CH",
+        "camino"                      => "CA",
+        "epiphany"                    => "EP",
+        "safari"                      => "SF",
+        "k-meleon"                    => "KM",
+        "mozilla"                     => "MZ",
+        "opera"                       => "OP",
+        "konqueror"                   => "KQ",
+        "icab"                        => "IC",
+        "lynx"                        => "LX",
+		"links"                       => "LI",
+        "ncsa mosaic"                 => "MO",
+        "amaya"                       => "AM",
+        "omniweb"                     => "OW",
+		"hotjava"					  => "HJ",
+        "browsex"                     => "BX",
+        "amigavoyager"                => "AV",
+        "amiga-aweb"                  => "AW",
+        "ibrowse"                     => "IB",
+		];
+
     /**
      *  $_javascript_versions
      *      desc    : 2D Array of javascript version supported by which browser
@@ -144,16 +143,16 @@ class phpSniff
      *  @access public
      *  @var array
      */
-    var $_javascript_versions = array(
-        '1.5'   =>  'NS5+,MZ,PX,FB,FX,GA,CH,CA,SF,KQ3+,KM,EP', // browsers that support JavaScript 1.5
-        '1.4'   =>  '',
-        '1.3'   =>  'NS4.05+,OP5+,IE5+',
-        '1.2'   =>  'NS4+,IE4+',
-        '1.1'   =>  'NS3+,OP,KQ',
-        '1.0'   =>  'NS2+,IE3+',
-		'0'     =>	'LI,LX,HJ'	
-        );
-	
+    var $_javascript_versions = [
+        "1.5"   =>  "NS5+,MZ,PX,FB,FX,GA,CH,CA,SF,KQ3+,KM,EP", // browsers that support JavaScript 1.5
+        "1.4"   =>  "",
+        "1.3"   =>  "NS4.05+,OP5+,IE5+",
+        "1.2"   =>  "NS4+,IE4+",
+        "1.1"   =>  "NS3+,OP,KQ",
+        "1.0"   =>  "NS2+,IE3+",
+		"0"     =>	"LI,LX,HJ",
+        ];
+
     /**
      *  $_browser_features
      *      desc    : 2D Array of browser features supported by which browser
@@ -165,33 +164,33 @@ class phpSniff
      *              :               set in the $_browsers array
      *  @access public
      *  @var string
-     */	
-	var $_browser_features = array(
+     */
+	var $_browser_features = [
 		/**
 		 *	the following are true by default
 		 *	(see phpSniff.core.php $_feature_set array)
 		 *	browsers listed here will be set to false
 		 **/
-		'html'		=>	'',
-		'images'	=>	'LI,LX',
-		'frames' 	=>	'LX',
-		'tables'	=>	'',
-		'java'		=>	'OP3,LI,LX,NS1,MO,IE1,IE2',
-		'plugins'	=>	'IE1,IE2,LI,LX',
+		"html"		=>	"",
+		"images"	=>	"LI,LX",
+		"frames" 	=>	"LX",
+		"tables"	=>	"",
+		"java"		=>	"OP3,LI,LX,NS1,MO,IE1,IE2",
+		"plugins"	=>	"IE1,IE2,LI,LX",
 		/**  
 		 *	the following are false by default
 		 *	(see phpSniff.core.php $_feature_set array)
 		 *	browsers listed here will be set to true
 		 **/
-		'css2'		=>	'NS5+,IE5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ3+,OP7+,KM,EP',
-		'css1'		=>	'NS4+,IE4+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP',
-		'iframes'	=>	'LI,IE3+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP',
-		'xml'		=>	'IE5+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP',
-		'dom'		=>	'IE5+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP',
-		'hdml'		=>	'',
-		'wml'		=>	''
-		);
-	
+		"css2"		=>	"NS5+,IE5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ3+,OP7+,KM,EP",
+		"css1"		=>	"NS4+,IE4+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP",
+		"iframes"	=>	"LI,IE3+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP",
+		"xml"		=>	"IE5+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP",
+		"dom"		=>	"IE5+,NS5+,MZ,PX,FB,FX,CH,CA,SF,GA,KQ,OP7+,KM,EP",
+		"hdml"		=>	"",
+		"wml"		=>	"",
+		];
+
     /**
      *
 	 *  $_browser_quirks
@@ -204,73 +203,73 @@ class phpSniff
      *              :               set in the $_browsers array
      *  @access public
      *  @var string
-     */	
-	var $_browser_quirks = array(
-		'must_cache_forms'			=>	'NS,MZ,FB,PX,FX',
-		'avoid_popup_windows'		=>	'IE3,LI,LX',
-		'cache_ssl_downloads'		=>	'IE',
-		'break_disposition_header'	=>	'IE5.5',
-		'empty_file_input_value'	=>	'KQ',
-		'scrollbar_in_way'			=>	'IE6'
-		);
-
+     */
+	var $_browser_quirks = [
+		"must_cache_forms"			=>	"NS,MZ,FB,PX,FX",
+		"avoid_popup_windows"		=>	"IE3,LI,LX",
+		"cache_ssl_downloads"		=>	"IE",
+		"break_disposition_header"	=>	"IE5.5",
+		"empty_file_input_value"	=>	"KQ",
+		"scrollbar_in_way"			=>	"IE6",
+		];
+
     /**
      *  @access private
      *  @var array
      */
-    var $_browser_info = array(
-    	'ua'         => '',
-    	'browser'    => 'Unknown',
-    	'version'    => 0,
-    	'maj_ver'    => 0,
-    	'min_ver'    => 0,
-    	'letter_ver' => '',
-    	'javascript' => '0.0',
-    	'platform'   => 'Unknown',
-    	'os'         => 'Unknown',
-    	'ip'         => 'Unknown',
-        'cookies'    => 'Unknown', // remains for backwards compatability
-    	'ss_cookies' => 'Unknown',
-        'st_cookies' => 'Unknown',
-    	'language'   => '',
-		'long_name'  => '',
-		'gecko'      => '',
-        'gecko_ver'  => ''
-		);
-	
+    var $_browser_info = [
+    	"ua"         => "",
+    	"browser"    => "Unknown",
+    	"version"    => 0,
+    	"maj_ver"    => 0,
+    	"min_ver"    => 0,
+    	"letter_ver" => "",
+    	"javascript" => "0.0",
+    	"platform"   => "Unknown",
+    	"os"         => "Unknown",
+    	"ip"         => "Unknown",
+        "cookies"    => "Unknown", // remains for backwards compatability
+    	"ss_cookies" => "Unknown",
+        "st_cookies" => "Unknown",
+    	"language"   => "",
+		"long_name"  => "",
+		"gecko"      => "",
+        "gecko_ver"  => "",
+		];
+
     /**
      *  @access private
      *  @var array
      */
-	var $_feature_set = array(
-		'html'		 =>	true,
-		'images'	 =>	true,
-		'frames' 	 =>	true,
-		'tables'	 =>	true,
-		'java'		 =>	true,
-		'plugins'	 => true,
-		'iframes'	 => false,
-		'css2'		 =>	false,
-		'css1'		 =>	false,
-		'xml'		 =>	false,
-		'dom'		 =>	false,
-		'wml'		 =>	false,
-		'hdml'		 =>	false
-		);
-	
+	var $_feature_set = [
+		"html"		 =>	true,
+		"images"	 =>	true,
+		"frames" 	 =>	true,
+		"tables"	 =>	true,
+		"java"		 =>	true,
+		"plugins"	 => true,
+		"iframes"	 => false,
+		"css2"		 =>	false,
+		"css1"		 =>	false,
+		"xml"		 =>	false,
+		"dom"		 =>	false,
+		"wml"		 =>	false,
+		"hdml"		 =>	false,
+		];
+
     /**
      *  @access private
      *  @var array
      */
-	var $_quirks = array(
-		'must_cache_forms'			=>	false,
-		'avoid_popup_windows'		=>	false,
-		'cache_ssl_downloads'		=>	false,
-		'break_disposition_header'	=>	false,
-		'empty_file_input_value'	=>	false,
-		'scrollbar_in_way'			=>	false
-		);
-
+	var $_quirks = [
+		"must_cache_forms"			=>	false,
+		"avoid_popup_windows"		=>	false,
+		"cache_ssl_downloads"		=>	false,
+		"break_disposition_header"	=>	false,
+		"empty_file_input_value"	=>	false,
+		"scrollbar_in_way"			=>	false,
+		];
+
     /**
      *  @access private
      *  @var boolean
@@ -285,13 +284,13 @@ class phpSniff
      *  @access private
      *  @var string
      */
-    var $_language_search_regex = '([a-z-]{2,})';
+    var $_language_search_regex = "([a-z-]{2,})";
 	/**
      *  @access private
      *  @var string
      */
-    var $_browser_regex;
-
+    var $_browser_regex;
+
     /**
      *  Performs some basic initialization and returns and object
      *  @param string User Agent to parse
@@ -299,9 +298,9 @@ class phpSniff
      *          [check_cookies, default_language, allow_masqeurading]
      *
      *  @return object phpSniff object
-     */
-    
-    function phpSniff($UA='',$settings = true)
+     */
+
+    function phpSniff($UA="",$settings = true)
     {   //  populate the HTTP_USER_AGENT string
         //  20020425 :: rraymond
         //      routine for easier configuration of the client at runtime
@@ -314,29 +313,29 @@ class phpSniff
         } else {
             // for backwards compatibility with 2.0.x series
             $run = (bool) $settings;
-        }
-        
+        }
+
         // if the user agent is empty, see if it exists somewhere
         if(empty($UA)) {
-            if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
-                $UA = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
-            } elseif(isset($_SERVER['HTTP_USER_AGENT'])) {
-                $UA = $_SERVER['HTTP_USER_AGENT'];
+            if(isset($HTTP_SERVER_VARS["HTTP_USER_AGENT"])) {
+                $UA = $HTTP_SERVER_VARS["HTTP_USER_AGENT"];
+            } elseif(isset($_SERVER["HTTP_USER_AGENT"])) {
+                $UA = $_SERVER["HTTP_USER_AGENT"];
             } else {
                 // try to use the getenv function as a last resort
-                $UA = getenv('HTTP_USER_AGENT');
+                $UA = getenv("HTTP_USER_AGENT");
             }
-        }
-        
+        }
+
         // if it's still empty, just return false as there is nothing to do
-        if(empty($UA)) return false;
-        
-        $this->_set_browser('ua',$UA);
+        if(empty($UA)) return false;
+
+        $this->_set_browser("ua",$UA);
         if($run) $this->init();
-    }
-
+    }
+
     function init ()
-    {   
+    {
         //  collect the ip
         	$this->_get_ip();
         //  run the cookie check routine first
@@ -356,35 +355,35 @@ class phpSniff
 			$this->_get_features();
 		//	point out any quirks
 			$this->_get_quirks();
-	}
-
+	}
+
     /**
      *  turn the cookie check routine on or off
      *  @param bool true or false    
      */
-    function check_cookies($yn) 
+    function check_cookies($yn)
     {
         $this->_check_cookies = (bool) $yn;
-    }
-    
+    }
+
     /**
      *  allow browser masquerading
      *  @param bool true or false    
      */
-    function allow_masquerading($yn) 
+    function allow_masquerading($yn)
     {
         $this->_allow_masquerading = (bool) $yn;
-    }
-    
+    }
+
     /**
      *  set the default browser language
      *  @param string valid language (ex: en-us)    
      */
-    function default_language($language) 
+    function default_language($language)
     {
         $this->_default_language = $language;
-    }
-    
+    }
+
     /**
      *  property
      *  @param string property to return . optional (null returns entire array)
@@ -393,12 +392,12 @@ class phpSniff
     function property ($p=null)
     {   if($p==null)
         {   return $this->_browser_info;
-        }
-        else
-        {   return $this->_browser_info[strtolower($p)];
-        }
-    }
-	
+        }
+
+           return $this->_browser_info[strtolower($p)];
+
+    }
+
 	/**
      *  get_property is an alias for property
      *  @param string property to return . optional (null returns entire array)
@@ -406,8 +405,8 @@ class phpSniff
      **/
 	function get_property ($p)
 	{	return $this->property($p);
-	}
-
+	}
+
     /**
      *  is
      *  @param string search phrase format = l:lang;b:browser
@@ -416,16 +415,16 @@ class phpSniff
      **/
     function is ($s)
     {   // perform language search
-		if(preg_match('/l:'.$this->_language_search_regex.'/i',$s,$match))
+		if(preg_match("/l:".$this->_language_search_regex."/i",$s,$match))
         {   if($match) return $this->_perform_language_search($match);
         }
         // perform browser search
-        elseif(preg_match('/b:'.$this->_browser_search_regex.'/i',$s,$match))
+        elseif(preg_match("/b:".$this->_browser_search_regex."/i",$s,$match))
         {   if($match) return $this->_perform_browser_search($match);
         }
         return false;
-    }
-	
+    }
+
 	/**
 	 *	browser_is
 	 *	@param string search phrase for browser
@@ -433,10 +432,10 @@ class phpSniff
      *  ex: $client->browser_is('OP5Up');
 	 **/
 	function browser_is ($s)
-	{	preg_match('/'.$this->_browser_search_regex.'/i',$s,$match);
+	{	preg_match("/".$this->_browser_search_regex."/i",$s,$match);
 		if($match) return $this->_perform_browser_search($match);
-	}
-	
+	}
+
 	/**
 	 *	language_is
 	 *	@param string search phrase for language
@@ -444,10 +443,10 @@ class phpSniff
      *  ex: $client->language_is('en-US');
 	 **/
 	function language_is ($s)
-	{	preg_match('/'.$this->_language_search_regex.'/i',$s,$match);
+	{	preg_match("/".$this->_language_search_regex."/i",$s,$match);
 		if($match) return $this->_perform_language_search($match);
-	}
-	
+	}
+
 	/**
 	 *	checks to see if the browser supports any of the following features:
      *