Index: Detect.php
===================================================================
RCS file: /repository/pear/Net_UserAgent/Detect.php,v
retrieving revision 1.27
diff -u -r1.27 Detect.php
--- Detect.php 12 Oct 2008 00:33:10 -0000 1.27
+++ Detect.php 14 Oct 2008 09:24:17 -0000
@@ -1,37 +1,38 @@
<?php
-// {{{ license
-
-// +----------------------------------------------------------------------+
-// | PHP version 4.2 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2007 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.0 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Authors: Dan Allen <dan@mojavelinux.com> |
-// | Jason Rust <jrust@php.net> |
-// +----------------------------------------------------------------------+
-
-// $Id: Detect.php,v 1.27 2008/10/12 00:33:10 jrust Exp $
+/**
+ * Net_UserAgent_Detect.php
+ *
+ * PHP version 4.2
+ *
+ * Copyright (c) 1997-2003 The PHP Group
+ *
+ * This source file is subject to version 2.0 of the PHP license,
+ * that is bundled with this package in the file LICENSE, and is
+ * available at through the world-wide-web at
+ * http://www.php.net/license/2_02.txt.
+ * If you did not receive a copy of the PHP license and are unable to
+ * obtain it through the world-wide-web, please send a note to
+ * license@php.net so we can mail you a copy immediately.
+ *
+ * @category Net
+ * @package Net_UserAgent
+ * @author Dan Allen <dan@mojavelinux.com>
+ * @author Jason Rust <jrust@php.net>
+ * @license http://www.php.net/license/2_02.txt PHP 2.0 Licence
+ * @version CVS: $Id: AllTests.php,v 1.6 2008/09/18 17:31:48 till Exp $
+ * @link http://pear.php.net/package/Net_UserAgent_Detect
+ */
-// }}}
// {{{ constants
-define('NET_USERAGENT_DETECT_BROWSER', 'browser');
-define('NET_USERAGENT_DETECT_OS', 'os');
+define('NET_USERAGENT_DETECT_BROWSER', 'browser');
+define('NET_USERAGENT_DETECT_OS', 'os');
define('NET_USERAGENT_DETECT_FEATURES', 'features');
-define('NET_USERAGENT_DETECT_QUIRKS', 'quirks');
-define('NET_USERAGENT_DETECT_ACCEPT', 'accept');
-define('NET_USERAGENT_DETECT_ALL', 'all');
+define('NET_USERAGENT_DETECT_QUIRKS', 'quirks');
+define('NET_USERAGENT_DETECT_ACCEPT', 'accept');
+define('NET_USERAGENT_DETECT_ALL', 'all');
// }}}
-// {{{ class Net_UserAgent_Detect
/**
* The Net_UserAgent_Detect object does a number of tests on an HTTP user
@@ -45,17 +46,25 @@
* This module had many influences from the lib/Browser.php code in
* version 1.3 of Horde.
*
+ * @category Net
+ * @package Net_UserAgent
* @author Jason Rust <jrust@php.net>
* @author Dan Allen <dan@mojavelinux.com>
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Jon Parise <jon@horde.org>
- * @package Net_UserAgent
+ * @license http://www.php.net/license/2_02.txt PHP 2.0 Licence
+ * @link http://pear.php.net/package/Net_UserAgent_Detect
*/
-
-// }}}
-class Net_UserAgent_Detect {
+class Net_UserAgent_Detect
+{
// {{{ constructor
+ /**
+ * Class constructor
+ *
+ * @param string $in_userAgent (optional) User agent override.
+ * @param mixed $in_detect (optional) The level of checking to do.
+ */
function Net_UserAgent_Detect($in_userAgent = null, $in_detect = null)
{
$this->detect($in_userAgent, $in_detect);
@@ -67,6 +76,9 @@
/**
* To be used in place of the contructor to return only open instance.
*
+ * @param string $in_userAgent (optional) User agent override.
+ * @param mixed $in_detect (optional) The level of checking to do.
+ *
* @access public
* @return object Net_UserAgent_Detect instance
*/
@@ -96,8 +108,8 @@
* this class statically then set all the parameters using th
* setOption()
*
- * @param string $in_userAgent (optional) User agent override.
- * @param mixed $in_detect (optional) The level of checking to do.
+ * @param string $in_userAgent (optional) User agent override.
+ * @param mixed $in_detect (optional) The level of checking to do.
*
* @access public
* @return void
@@ -113,8 +125,13 @@
$hasRun = true;
// {{{ set up static properties
- $in_userAgent = isset($options['userAgent']) && is_null($in_userAgent) ? $options['userAgent'] : $in_userAgent;
- $in_detect = isset($options['detectOptions']) && is_null($in_detect) ? $options['detectOptions'] : $in_detect;
+ if (isset($options['userAgent']) && is_null($in_userAgent)) {
+ $in_userAgent = $options['userAgent'];
+ }
+
+ if (isset($options['detectOptions']) && is_null($in_detect)) {
+ $in_detect = $options['detectOptions'];
+ }
// User agent string that is being analyzed
$userAgent = &Net_UserAgent_Detect::_getStaticProperty('userAgent');
@@ -182,15 +199,12 @@
if (is_null($in_userAgent)) {
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$userAgent = $_SERVER['HTTP_USER_AGENT'];
- }
- elseif (isset($GLOBALS['HTTP_SERVER_VARS']['HTTP_USER_AGENT'])) {
+ } elseif (isset($GLOBALS['HTTP_SERVER_VARS']['HTTP_USER_AGENT'])) {
$userAgent = $GLOBALS['HTTP_SERVER_VARS']['HTTP_USER_AGENT'];
- }
- else {
+ } else {
$userAgent = '';
}
- }
- else {
+ } else {
$userAgent = $in_userAgent;
}
@@ -202,15 +216,12 @@
NET_USERAGENT_DETECT_OS, NET_USERAGENT_DETECT_FEATURES,
NET_USERAGENT_DETECT_QUIRKS, NET_USERAGENT_DETECT_ACCEPT,
NET_USERAGENT_DETECT_ALL);
+
$detect = is_null($in_detect) ? NET_USERAGENT_DETECT_ALL : $in_detect;
+
settype($detect, 'array');
- foreach($detectOptions as $option) {
- if (in_array($option, $detect)) {
- $detectFlags[$option] = true;
- }
- else {
- $detectFlags[$option] = false;
- }
+ foreach ($detectOptions as $option) {
+ $detectFlags[$option] = in_array($option, $detect);
}
// initialize the arrays of browsers and operating systems
@@ -228,30 +239,37 @@
// Browser type
if ($detectFlags[NET_USERAGENT_DETECT_ALL] || $detectFlags[NET_USERAGENT_DETECT_BROWSER]) {
- $browser['webdav'] = ($agt == 'microsoft data access internet publishing provider dav' || $agt == 'microsoft data access internet publishing provider protocol discovery');
- $browser['konq'] = (strpos($agt, 'konqueror') !== false || strpos($agt, 'safari') !== false );
+ $browser['webdav'] = ($agt == 'microsoft data access internet publishing provider dav' || $agt == 'microsoft data access internet publishing provider protocol discovery');
+ $browser['konq'] = (strpos($agt, 'konqueror') !== false || strpos($agt, 'safari') !== false );
$browser['safari'] = (strpos($agt, 'safari') !== false);
$browser['chrome'] = (strpos($agt, 'chrome') !== false);
+
$browser['safari_mobile'] = (strpos($agt, 'safari') !== false && strpos($agt, 'mobile') !== false );
- $browser['text'] = strpos($agt, 'links') !== false || strpos($agt, 'lynx') !== false || strpos($agt, 'w3m') !== false;
- $browser['ns'] = strpos($agt, 'mozilla') !== false && !(strpos($agt, 'spoofer') !== false) && !(strpos($agt, 'compatible') !== false) && !(strpos($agt, 'hotjava') !== false) && !(strpos($agt, 'opera') !== false) && !(strpos($agt, 'webtv') !== false) ? 1 : 0;
- $browser['netgem'] = strpos($agt, 'netgem') !== false;
- $browser['icab'] = strpos($agt, 'icab') !== false;
- $browser['ns2'] = $browser['ns'] && $majorVersion == 2;
- $browser['ns3'] = $browser['ns'] && $majorVersion == 3;
- $browser['ns4'] = $browser['ns'] && $majorVersion == 4;
- $browser['ns4up'] = $browser['ns'] && $majorVersion >= 4;
+
+ $browser['text'] = strpos($agt, 'links') !== false || strpos($agt, 'lynx') !== false || strpos($agt, 'w3m') !== false;
+ $browser['ns'] = strpos($agt, 'mozilla') !== false && !(strpos($agt, 'spoofer') !== false) && !(strpos($agt, 'compatible') !== false) && !(strpos($agt, 'hotjava') !== false) && !(strpos($agt, 'opera') !== false) && !(strpos($agt, 'webtv') !== false) ? 1 : 0;
+ $browser['netgem'] = strpos($agt, 'netgem') !== false;
+ $browser['icab'] = strpos($agt, 'icab') !== false;
+ $browser['ns2'] = $browser['ns'] && $majorVersion == 2;
+ $browser['ns3'] = $browser['ns'] && $majorVersion == 3;
+ $browser['ns4'] = $browser['ns'] && $majorVersion == 4;
+ $browser['ns4up'] = $browser['ns'] && $majorVersion >= 4;
+
// determine if this is a Netscape Navigator
- $browser['nav'] = $browser['belowns6'] = $browser['ns'] && $majorVersion < 5;
- $browser['ns6'] = !$browser['konq'] && $browser['ns'] && $majorVersion == 5;
- $browser['ns6up'] = $browser['ns6'] && $majorVersion >= 5;
- $browser['gecko'] = strpos($agt, 'gecko') !== false && !$browser['konq'];
- $browser['firefox'] = $browser['gecko'] && strpos($agt, 'firefox') !== false;
+ $browser['belowns6'] = $browser['ns'] && $majorVersion < 5;
+
+ $browser['nav'] = $browser['belowns6'];
+ $browser['ns6'] = !$browser['konq'] && $browser['ns'] && $majorVersion == 5;
+ $browser['ns6up'] = $browser['ns6'] && $majorVersion >= 5;
+
+ $browser['gecko'] = strpos($agt, 'gecko') !== false && !$browser['konq'];
+ $browser['firefox'] = $browser['gecko'] && strpos($agt, 'firefox') !== false;
$browser['firefox0.x'] = $browser['firefox'] && strpos($agt, 'firefox/0.') !== false;
$browser['firefox1.x'] = $browser['firefox'] && strpos($agt, 'firefox/1.') !== false;
$browser['firefox1.5'] = $browser['firefox'] && strpos($agt, 'firefox/1.5') !== false;
$browser['firefox2.x'] = $browser['firefox'] && strpos($agt, 'firefox/2.') !== false;
$browser['firefox3.x'] = $browser['firefox'] && strpos($agt, 'firefox/3.') !== false;
+
$browser['ie'] = strpos($agt, 'msie') !== false && !(strpos($agt, 'opera') !== false);
$browser['ie3'] = $browser['ie'] && $majorVersion < 4;
$browser['ie4'] = $browser['ie'] && $majorVersion == 4 && (strpos($agt, 'msie 4') !== false);
@@ -264,22 +282,26 @@
$browser['ie6up'] = $browser['ie5up'] && !$browser['ie5'] && !$browser['ie5_5'];
$browser['ie7'] = strpos($agt, 'msie 7') !== false;
$browser['ie7up'] = $browser['ie6up'] && !$browser['ie6'];
- $browser['belowie6']= $browser['ie'] && !$browser['ie6up'];
- $browser['opera'] = strpos($agt, 'opera') !== false;
- $browser['opera2'] = strpos($agt, 'opera 2') !== false || strpos($agt, 'opera/2') !== false;
- $browser['opera3'] = strpos($agt, 'opera 3') !== false || strpos($agt, 'opera/3') !== false;
- $browser['opera4'] = strpos($agt, 'opera 4') !== false || strpos($agt, 'opera/4') !== false;
- $browser['opera5'] = strpos($agt, 'opera 5') !== false || strpos($agt, 'opera/5') !== false;
- $browser['opera6'] = strpos($agt, 'opera 6') !== false || strpos($agt, 'opera/6') !== false;
- $browser['opera7'] = strpos($agt, 'opera 7') !== false || strpos($agt, 'opera/7') !== false;
- $browser['opera8'] = strpos($agt, 'opera 8') !== false || strpos($agt, 'opera/8') !== false;
- $browser['opera9'] = strpos($agt, 'opera 9') !== false || strpos($agt, 'opera/9') !== false;
+
+ $browser['belowie6'] = $browser['ie'] && !$browser['ie6up'];
+
+ $browser['opera'] = strpos($agt, 'opera') !== false;
+ $browser['opera2'] = strpos($agt, 'opera 2') !== false || strpos($agt, 'opera/2') !== false;
+ $browser['opera3'] = strpos($agt, 'opera 3') !== false || strpos($agt, 'opera/3') !== false;
+ $browser['opera4'] = strpos($agt, 'opera 4') !== false || strpos($agt, 'opera/4') !== false;
+ $browser['opera5'] = strpos($agt, 'opera 5') !== false || strpos($agt, 'opera/5') !== false;
+ $browser['opera6'] = strpos($agt, 'opera 6') !== false || strpos($agt, 'opera/6') !== false;
+ $browser['opera7'] = strpos($agt, 'opera 7') !== false || strpos($agt, 'opera/7') !== false;
+ $browser['opera8'] = strpos($agt, 'opera 8') !== false || strpos($agt, 'opera/8') !== false;
+ $browser['opera9'] = strpos($agt, 'opera 9') !== false || strpos($agt, 'opera/9') !== false;
$browser['opera5up'] = $browser['opera'] && !$browser['opera2'] && !$browser['opera3'] && !$browser['opera4'];
$browser['opera6up'] = $browser['opera'] && !$browser['opera2'] && !$browser['opera3'] && !$browser['opera4'] && !$browser['opera5'];
$browser['opera7up'] = $browser['opera'] && !$browser['opera2'] && !$browser['opera3'] && !$browser['opera4'] && !$browser['opera5'] && !$browser['opera6'];
$browser['opera8up'] = $browser['opera'] && !$browser['opera2'] && !$browser['opera3'] && !$browser['opera4'] && !$browser['opera5'] && !$browser['opera6'] && !$browser['opera7'];
$browser['opera9up'] = $browser['opera'] && !$browser['opera2'] && !$browser['opera3'] && !$browser['opera4'] && !$browser['opera5'] && !$browser['opera6'] && !$browser['opera7'] && !$browser['opera8'];
+
$browser['belowopera8'] = $browser['opera'] && !$browser['opera8up'];
+
$browser['aol'] = strpos($agt, 'aol') !== false;
$browser['aol3'] = $browser['aol'] && $browser['ie3'];
$browser['aol4'] = $browser['aol'] && $browser['ie4'];
@@ -289,10 +311,11 @@
$browser['aol8'] = strpos($agt, 'aol 8') !== false || strpos($agt, 'aol8') !== false;
$browser['webtv'] = strpos($agt, 'webtv') !== false;
$browser['aoltv'] = $browser['tvnavigator'] = strpos($agt, 'navio') !== false || strpos($agt, 'navio_aoltv') !== false;
- $browser['hotjava'] = strpos($agt, 'hotjava') !== false;
- $browser['hotjava3'] = $browser['hotjava'] && $majorVersion == 3;
+
+ $browser['hotjava'] = strpos($agt, 'hotjava') !== false;
+ $browser['hotjava3'] = $browser['hotjava'] && $majorVersion == 3;
$browser['hotjava3up'] = $browser['hotjava'] && $majorVersion >= 3;
- $browser['iemobile'] = strpos($agt, 'iemobile') !== false || strpos($agt, 'windows ce') !== false && (strpos($agt, 'ppc') !== false || strpos($agt, 'smartphone') !== false);
+ $browser['iemobile'] = strpos($agt, 'iemobile') !== false || strpos($agt, 'windows ce') !== false && (strpos($agt, 'ppc') !== false || strpos($agt, 'smartphone') !== false);
}
if ($detectFlags[NET_USERAGENT_DETECT_ALL] ||
@@ -300,48 +323,41 @@
// Javascript Check
if ($browser['ns2'] || $browser['ie3']) {
Net_UserAgent_Detect::setFeature('javascript', 1.0);
- }
- elseif ($browser['iemobile']) {
- // no javascript
- }
- elseif ($browser['opera5up']) {
+ } elseif ($browser['iemobile']) {
+ // no javascript
+ } elseif ($browser['opera5up']) {
Net_UserAgent_Detect::setFeature('javascript', 1.3);
- }
- elseif ($browser['opera'] || $browser['ns3']) {
+ } elseif ($browser['opera'] || $browser['ns3']) {
Net_UserAgent_Detect::setFeature('javascript', 1.1);
- }
- elseif (($browser['ns4'] && ($version <= 4.05)) || $browser['ie4']) {
+ } elseif (($browser['ns4'] && ($version <= 4.05)) || $browser['ie4']) {
Net_UserAgent_Detect::setFeature('javascript', 1.2);
- }
- elseif (($browser['ie5up'] && strpos($agt, 'mac') !== false) || $browser['konq']) {
+ } elseif (($browser['ie5up'] && strpos($agt, 'mac') !== false) || $browser['konq']) {
Net_UserAgent_Detect::setFeature('javascript', 1.4);
- }
- // I can't believe IE6 still has javascript 1.3, what a shitty browser
- elseif (($browser['ns4'] && ($version > 4.05)) || $browser['ie5up'] || $browser['hotjava3up']) {
+ } elseif (($browser['ns4'] && ($version > 4.05)) || $browser['ie5up'] || $browser['hotjava3up']) {
+ // I can't believe IE6 still has javascript 1.3, what a shitty browser
Net_UserAgent_Detect::setFeature('javascript', 1.3);
- }
- elseif ($browser['ns6up'] || $browser['gecko'] || $browser['netgem']) {
+ } elseif ($browser['ns6up'] || $browser['gecko'] || $browser['netgem']) {
Net_UserAgent_Detect::setFeature('javascript', 1.5);
}
}
/** OS Check **/
if ($detectFlags[NET_USERAGENT_DETECT_ALL] || $detectFlags[NET_USERAGENT_DETECT_OS]) {
- $os['win'] = strpos($agt, 'win') !== false || strpos($agt, '16bit') !== false;
- $os['win95'] = strpos($agt, 'win95') !== false || strpos($agt, 'windows 95') !== false;
- $os['win16'] = strpos($agt, 'win16') !== false || strpos($agt, '16bit') !== false || strpos($agt, 'windows 3.1') !== false || strpos($agt, 'windows 16-bit') !== false;
- $os['win31'] = strpos($agt, 'windows 3.1') !== false || strpos($agt, 'win16') !== false || strpos($agt, 'windows 16-bit') !== false;
- $os['winme'] = strpos($agt, 'win 9x 4.90') !== false;
- $os['wince'] = strpos($agt, 'windows ce') !== false;
- $os['win2k'] = strpos($agt, 'windows nt 5.0') !== false;
- $os['winxp'] = strpos($agt, 'windows nt 5.1') !== false;
- $os['win2003'] = strpos($agt, 'windows nt 5.2') !== false;
- $os['win98'] = strpos($agt, 'win98') !== false || strpos($agt, 'windows 98') !== false;
- $os['win9x'] = $os['win95'] || $os['win98'];
- $os['winnt'] = (strpos($agt, 'winnt') !== false || strpos($agt, 'windows nt') !== false) && strpos($agt, 'windows nt 5') === false;
- $os['win32'] = $os['win95'] || $os['winnt'] || $os['win98'] || $majorVersion >= 4 && strpos($agt, 'win32') !== false || strpos($agt, '32bit') !== false;
- $os['os2'] = strpos($agt, 'os/2') !== false || strpos($agt, 'ibm-webexplorer') !== false;
- $os['mac'] = strpos($agt, 'mac') !== false;
+ $os['win'] = strpos($agt, 'win') !== false || strpos($agt, '16bit') !== false;
+ $os['win95'] = strpos($agt, 'win95') !== false || strpos($agt, 'windows 95') !== false;
+ $os['win16'] = strpos($agt, 'win16') !== false || strpos($agt, '16bit') !== false || strpos($agt, 'windows 3.1') !== false || strpos($agt, 'windows 16-bit') !== false;
+ $os['win31'] = strpos($agt, 'windows 3.1') !== false || strpos($agt, 'win16') !== false || strpos($agt, 'windows 16-bit') !== false;
+ $os['winme'] = strpos($agt, 'win 9x 4.90') !== false;
+ $os['wince'] = strpos($agt, 'windows ce') !== false;
+ $os['win2k'] = strpos($agt, 'windows nt 5.0') !== false;
+ $os['winxp'] = strpos($agt, 'windows nt 5.1') !== false;
+ $os['win2003'] = strpos($agt, 'windows nt 5.2') !== false;
+ $os['win98'] = strpos($agt, 'win98') !== false || strpos($agt, 'windows 98') !== false;
+ $os['win9x'] = $os['win95'] || $os['win98'];
+ $os['winnt'] = (strpos($agt, 'winnt') !== false || strpos($agt, 'windows nt') !== false) && strpos($agt, 'windows nt 5') === false;
+ $os['win32'] = $os['win95'] || $os['winnt'] || $os['win98'] || $majorVersion >= 4 && strpos($agt, 'win32') !== false || strpos($agt, '32bit') !== false;
+ $os['os2'] = strpos($agt, 'os/2') !== false || strpos($agt, 'ibm-webexplorer') !== false;
+ $os['mac'] = strpos($agt, 'mac') !== false;
$os['mac68k'] = $os['mac'] && (strpos($agt, '68k') !== false || strpos($agt, '68000') !== false);
$os['macppc'] = $os['mac'] && (strpos($agt, 'ppc') !== false || strpos($agt, 'powerpc') !== false);
$os['sun'] = strpos($agt, 'sunos') !== false;
@@ -464,11 +480,14 @@
* or an array of options. Default is NET_USERAGENT_DETECT_ALL.
*
* @param string $in_field The option field (userAgent or detectOptions)
- * @param mixed $in_value The value for the field
+ * @param mixed $in_value The value for the field
+ *
+ * @return void
*/
function setOption($in_field, $in_value)
{
$options = &Net_UserAgent_Detect::_getStaticProperty('options');
+
$options[$in_field] = $in_value;
}
@@ -481,7 +500,7 @@
* Given one of the flags listed in the properties, this function will return
* the value associated with that flag.
*
- * @param string $in_match flag to lookup
+ * @param string $in_match flag to lookup
*
* @access public
* @return boolean whether or not the browser satisfies this flag
@@ -490,7 +509,12 @@
{
Net_UserAgent_Detect::detect();
$browser = &Net_UserAgent_Detect::_getStaticProperty('browser');
- return isset($browser[strtolower($in_match)]) ? $browser[strtolower($in_match)] : false;
+
+ if (isset($browser[strtolower($in_match)])) {
+ return $browser[strtolower($in_match)];
+ }
+
+ return false;
}
// }}}
@@ -502,7 +526,7 @@
* an expect list and returning the string of the first match, so put the important
* ones first in the array.
*
- * @param array $in_expectList the browser flags to search for
+ * @param array $in_expectList the browser flags to search for
*
* @access public
* @return string first flag that matches
@@ -511,7 +535,7 @@
{
Net_UserAgent_Detect::detect();
$browser = &Net_UserAgent_Detect::_getStaticProperty('browser');
- foreach((array) $in_expectList as $brwsr) {
+ foreach ((array) $in_expectList as $brwsr) {
if (!empty($browser[strtolower($brwsr)])) {
return $brwsr;
}
@@ -530,7 +554,7 @@
* to the appropriate flag. Be sure to pass in the flags in ascending order
* if you want a basic matches first, followed by more detailed matches.
*
- * @param array $in_vendorStrings (optional) array of flags matched with vendor strings
+ * @param array $in_vendorStrings (optional) array of flags matched with vendor strings
*
* @access public
* @return string vendor string matches appropriate flag
@@ -563,7 +587,7 @@
Net_UserAgent_Detect::detect();
$browser = &Net_UserAgent_Detect::_getStaticProperty('browser');
- foreach((array) $in_vendorStrings as $flag => $string) {
+ foreach ((array) $in_vendorStrings as $flag => $string) {
if (!empty($browser[$flag])) {
$vendorString = $string;
}
@@ -572,7 +596,7 @@
// if there are no matches just use the user agent leading idendifier (usually Mozilla)
if (!isset($vendorString)) {
$leadingIdentifier = &Net_UserAgent_Detect::_getStaticProperty('leadingIdentifier');
- $vendorString = $leadingIdentifier;
+ $vendorString = $leadingIdentifier;
}
return $vendorString;
@@ -639,7 +663,7 @@
* Given one of the flags listed in the properties, this function will return
* the value associated with that flag for the operating system.
*
- * @param string $in_match flag to lookup
+ * @param string $in_match flag to lookup
*
* @access public
* @return boolean whether or not the OS satisfies this flag
@@ -648,7 +672,12 @@
{
Net_UserAgent_Detect::detect();
$os = &Net_UserAgent_Detect::_getStaticProperty('os');
- return isset($os[strtolower($in_match)]) ? $os[strtolower($in_match)] : false;
+
+ if (isset($os[strtolower($in_match)])) {
+ return $os[strtolower($in_match)];
+ }
+
+ return false;
}
// }}}
@@ -657,8 +686,10 @@
/**
* Since simply returning the "os" is somewhat ambiguous since there
* are different ways to classify the browser, this function works by taking
- * an expect list and returning the string of the first match, so put the important
- * ones first in the array.
+ * an expect list and returning the string of the first match, so put the
+ * important ones first in the array.
+ *
+ * @param string[] $in_expectList Expected matches.
*
* @access public
* @return string first flag that matches
@@ -667,7 +698,7 @@
{
Net_UserAgent_Detect::detect();
$os = &Net_UserAgent_Detect::_getStaticProperty('os');
- foreach((array) $in_expectList as $expectOs) {
+ foreach ((array) $in_expectList as $expectOs) {
if (!empty($os[strtolower($expectOs)])) {
return $expectOs;
}
@@ -686,7 +717,7 @@
* to the appropriate flag. Be sure to pass in the flags in ascending order
* if you want a basic matches first, followed by more detailed matches.
*
- * @param array $in_osStrings (optional) array of flags matched with os strings
+ * @param array $in_osStrings (optional) array of flags matched with os strings
*
* @access public
* @return string os string matches appropriate flag
@@ -711,7 +742,7 @@
$osString = 'Unknown';
$os = &Net_UserAgent_Detect::_getStaticProperty('os');
- foreach((array) $in_osStrings as $flag => $string) {
+ foreach ((array) $in_osStrings as $flag => $string) {
if (!empty($os[$flag])) {
$osString = $string;
}
@@ -730,7 +761,7 @@
* mechanism allows the coder to determine if an excepetion must
* be made with the current client.
*
- * @param string $in_quirk The quirk to set
+ * @param string $in_quirk The quirk to set
* @param string $in_hasQuirk (optional) Does the browser have the quirk?
*
* @access public
@@ -738,8 +769,9 @@
*/
function setQuirk($in_quirk, $in_hasQuirk = true)
{
- $quirks = &Net_UserAgent_Detect::_getStaticProperty('quirks');
+ $quirks = &Net_UserAgent_Detect::_getStaticProperty('quirks');
$hasQuirk = !empty($in_hasQuirk);
+
$quirks[strtolower($in_quirk)] = $hasQuirk;
}
@@ -782,7 +814,12 @@
{
Net_UserAgent_Detect::detect();
$quirks = &Net_UserAgent_Detect::_getStaticProperty('quirks');
- return isset($quirks[strtolower($in_quirk)]) ? $quirks[strtolower($in_quirk)] : null;
+
+ if (isset($quirks[strtolower($in_quirk)])) {
+ return $quirks[strtolower($in_quirk)];
+ }
+
+ return null;
}
// }}}
@@ -795,7 +832,7 @@
* helps keep track of the core features of a client, such as if the client
* supports dhtml, dom, javascript, etc.
*
- * @param string $in_feature The feature to set
+ * @param string $in_feature The feature to set
* @param string $in_hasFeature (optional) Does the browser have the feature?
*
* @access public
@@ -804,6 +841,7 @@
function setFeature($in_feature, $in_hasFeature = true)
{
$features = &Net_UserAgent_Detect::_getStaticProperty('features');
+
$features[strtolower($in_feature)] = $in_hasFeature;
}
@@ -846,7 +884,11 @@
{
Net_UserAgent_Detect::detect();
$features = &Net_UserAgent_Detect::_getStaticProperty('features');
- return isset($features[strtolower($in_feature)]) ? $features[strtolower($in_feature)] : null;
+
+ if (isset($features[strtolower($in_feature)])) {
+ return $features[strtolower($in_feature)];
+ }
+ return null;
}
// }}}
@@ -862,8 +904,8 @@
* you would pass in your allowed languages and see if any of the
* languages set in the browser match.
*
- * @param string $in_expectList values to check
- * @param string $in_type type of accept
+ * @param string $in_expectList values to check
+ * @param string $in_type type of accept
*
* @access public
* @return string the first matched value
@@ -873,9 +915,10 @@
Net_UserAgent_Detect::detect();
$type = strtolower($in_type);
- if ($type == 'mimetype' || $type == 'language' || $type == 'charset' || $type == 'encoding') {
+ if ($type == 'mimetype' || $type == 'language'
+ || $type == 'charset' || $type == 'encoding') {
$typeArray = &Net_UserAgent_Detect::_getStaticProperty($type);
- foreach((array) $in_expectList as $match) {
+ foreach ((array) $in_expectList as $match) {
if (!empty($typeArray[$match])) {
return $match;
}
@@ -896,8 +939,8 @@
* This function takes and array of accepted values for the type and
* records them for retrieval.
*
- * @param array $in_values values of the accept type
- * @param string $in_type type of accept
+ * @param array $in_values values of the accept type
+ * @param string $in_type type of accept
*
* @access public
* @return void
@@ -906,9 +949,10 @@
{
$type = strtolower($in_type);
- if ($type == 'mimetype' || $type == 'language' || $type == 'charset' || $type == 'encoding') {
+ if ($type == 'mimetype' || $type == 'language'
+ || $type == 'charset' || $type == 'encoding') {
$typeArray = &Net_UserAgent_Detect::_getStaticProperty($type);
- foreach((array) $in_values as $value) {
+ foreach ((array) $in_values as $value) {
$typeArray[$value] = true;
}
}
@@ -925,15 +969,16 @@
* This function checks the array for the given type and determines if
* the browser accepts it.
*
- * @param string $in_value values to check
- * @param string $in_type type of accept
+ * @param string $in_value values to check
+ * @param string $in_type type of accept
*
* @access public
* @return bool whether or not the value is accept for this type
*/
function hasAcceptType($in_value, $in_type)
{
- return (bool) Net_UserAgent_Detect::getAcceptType((array) $in_value, $in_type);
+ return (bool) Net_UserAgent_Detect::getAcceptType((array) $in_value,
+ $in_type);
}
// }}}
@@ -959,8 +1004,9 @@
* Copy of getStaticProperty() from PEAR.php to avoid having to
* include PEAR.php
*
+ * @param string $var The variable to retrieve.
+ *
* @access private
- * @param string $var The variable to retrieve.
* @return mixed A reference to the variable. If not set it will be
* auto initialised to NULL.
*/