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 @@ | -// | Jason Rust | -// +----------------------------------------------------------------------+ - -// $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 + * @author Jason Rust + * @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 * @author Dan Allen * @author Chuck Hagenbuch * @author Jon Parise - * @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. */