summaryrefslogtreecommitdiffstats
path: root/system/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries')
-rw-r--r--system/libraries/User_agent.php500
1 files changed, 96 insertions, 404 deletions
diff --git a/system/libraries/User_agent.php b/system/libraries/User_agent.php
index 8c63924b9..21162388a 100644
--- a/system/libraries/User_agent.php
+++ b/system/libraries/User_agent.php
@@ -43,375 +43,6 @@ class CI_User_agent {
var $moble = '';
var $robot = '';
- var $platforms = array (
- 'windows nt 6.0' => 'Windows Longhorn',
- 'windows nt 5.2' => 'Windows 2003',
- 'windows nt 5.0' => 'Windows 2000',
- 'windows nt 5.1' => 'Windows XP',
- 'windows nt 4.0' => 'Windows NT 4.0',
- 'winnt4.0' => 'Windows NT 4.0',
- 'winnt 4.0' => 'Windows NT',
- 'winnt' => 'Windows NT',
- 'windows 98' => 'Windows 98',
- 'win98' => 'Windows 98',
- 'windows 95' => 'Windows 95',
- 'win95' => 'Windows 95',
- 'windows' => 'Unknown Windows OS',
- 'os x' => 'Mac OS X',
- 'ppc mac' => 'Power PC Mac',
- 'freebsd' => 'FreeBSD',
- 'ppc' => 'Macintosh',
- 'linux' => 'Linux',
- 'debian' => 'Debian',
- 'sunos' => 'Sun Solaris',
- 'beos' => 'BeOS',
- 'apachebench' => 'ApacheBench',
- 'aix' => 'AIX',
- 'irix' => 'Irix',
- 'osf' => 'DEC OSF',
- 'hp-ux' => 'HP-UX',
- 'netbsd' => 'NetBSD',
- 'bsdi' => 'BSDi',
- 'openbsd' => 'OpenBSD',
- 'gnu' => 'GNU/Linux',
- 'unix' => 'Unknown Unix OS'
- );
-
- var $browsers = array(
- 'Opera' => 'Opera',
- 'MSIE' => 'Internet Explorer',
- 'Internet Explorer' => 'Internet Explorer',
- 'Shiira' => 'Shiira',
- 'Firefox' => 'Firefox',
- 'Chimera' => 'Chimera',
- 'Phoenix' => 'Phoenix',
- 'Firebird' => 'Firebird',
- 'Camino' => 'Camino',
- 'Netscape' => 'Netscape',
- 'OmniWeb' => 'OmniWeb',
- 'Mozilla' => 'Mozilla',
- 'Safari' => 'Safari',
- 'Konqueror' => 'Konqueror',
- 'icab' => 'iCab',
- 'Lynx' => 'Lynx',
- 'Links' => 'Links',
- 'hotjava' => 'HotJava',
- 'amaya' => 'Amaya',
- 'IBrowse' => 'IBrowse'
- );
-
- var $mobiles = array(
- 'mobileexplorer' => 'Mobile Explorer',
- 'openwave' => 'Open Wave',
- 'opera mini' => 'Opera Mini',
- 'operamini' => 'Opera Mini',
- 'elaine' => 'Palm',
- 'palmsource' => 'Palm',
- 'digital paths' => 'Palm',
- 'avantgo' => 'Avantgo',
- 'xiino' => 'Xiino',
- 'palmscape' => 'Palmscape',
- 'nokia' => 'Nokia',
- 'ericsson' => 'Ericsson',
- 'blackBerry' => 'BlackBerry',
- 'motorola' => 'Motorola'
- );
-
- var $robots = array(
-
- 'googlebot' => 'Googlebot',
- 'msnbot' => 'MSNBot',
- 'slurp' => 'Inktomi Slurp',
- 'yahoo' => 'Yahoo',
- 'askjeeves' => 'AskJeeves',
- 'fastcrawler' => 'FastCrawler',
- 'infoseek' => 'InfoSeek Robot 1.0',
- 'lycos' => 'Lycos',
- 'abcdatos' => 'ABCdatos BotLink',
- 'Acme.Spider' => 'Acme.Spider',
- 'ahoythehomepagefinder' => 'Ahoy! The Homepage Finder',
- 'Alkaline' => 'Alkaline',
- 'anthill' => 'Anthill',
- 'appie' => 'Walhello appie',
- 'arachnophilia' => 'Arachnophilia',
- 'arale' => 'Arale',
- 'araneo' => 'Araneo',
- 'araybot' => 'AraybOt',
- 'architext' => 'ArchitextSpider',
- 'aretha' => 'Aretha',
- 'ariadne' => 'ARIADNE',
- 'arks' => 'arks',
- 'aspider' => 'ASpider (Associative Spider)',
- 'atn.txt' => 'ATN Worldwide',
- 'atomz' => 'Atomz.com Search Robot',
- 'auresys' => 'AURESYS',
- 'backrub' => 'BackRub',
- 'bbot' => 'BBot',
- 'bigbrother' => 'Big Brother',
- 'bjaaland' => 'Bjaaland',
- 'blackwidow' => 'BlackWidow',
- 'blindekuh' => 'Die Blinde Kuh',
- 'Bloodhound' => 'Bloodhound',
- 'borg-bot' => 'Borg-Bot',
- 'boxseabot' => 'BoxSeaBot',
- 'brightnet' => 'bright.net caching robot',
- 'bspider' => 'BSpider',
- 'cactvschemistryspider' => 'CACTVS Chemistry Spider',
- 'calif' => 'Calif',
- 'cassandra' => 'Cassandra',
- 'cgireader' => 'Digimarc Marcspider/CGI',
- 'checkbot' => 'Checkbot',
- 'christcrawler' => 'ChristCrawler.com',
- 'churl' => 'churl',
- 'cienciaficcion' => 'cIeNcIaFiCcIoN.nEt',
- 'cmc' => 'CMC/0.01',
- 'Collective' => 'Collective',
- 'combine' => 'Combine System',
- 'confuzzledbot' => 'ConfuzzledBot',
- 'coolbot' => 'CoolBot',
- 'core' => 'Web Core / Roots',
- 'cosmos' => 'XYLEME Robot',
- 'cruiser' => 'Internet Cruiser Robot',
- 'cusco' => 'Cusco',
- 'cyberspyder' => 'CyberSpyder Link Test',
- 'cydralspider' => 'CydralSpider',
- 'desertrealm' => 'Desert Realm Spider',
- 'deweb' => 'DeWeb(c) Katalog/Index',
- 'dienstspider' => 'DienstSpider',
- 'digger' => 'Digger',
- 'diibot' => 'Digital Integrity Robot',
- 'directhit' => 'Direct Hit Grabber',
- 'dnabot' => 'DNAbot',
- 'download_express' => 'DownLoad Express',
- 'dragonbot' => 'DragonBot',
- 'e-collector' => 'e-collector',
- 'ebiness' => 'EbiNess',
- 'eit' => 'EIT Link Verifier Robot',
- 'elfinbot' => 'ELFINBOT',
- 'emacs' => 'Emacs-w3 Search Engine',
- 'emcspider' => 'ananzi',
- 'esculapio' => 'esculapio',
- 'esther' => 'Esther',
- 'evliyacelebi' => 'Evliya Celebi',
- 'nzexplorer' => 'nzexplorer',
- 'fdse' => 'Fluid Dynamics Search Engine robot',
- 'felix' => 'Felix IDE',
- 'ferret' => 'Wild Ferret Web Hopper #1, #2, #3',
- 'fetchrover' => 'FetchRover',
- 'fido' => 'fido',
- 'finnish' => 'Hämähäkki',
- 'fireball' => 'KIT-Fireball',
- 'fish' => 'Fish search',
- 'fouineur' => 'Fouineur',
- 'francoroute' => 'Robot Francoroute',
- 'freecrawl' => 'Freecrawl',
- 'funnelweb' => 'FunnelWeb',
- 'gama' => 'gammaSpider, FocusedCrawler',
- 'gazz' => 'gazz',
- 'gcreep' => 'GCreep',
- 'getbot' => 'GetBot',
- 'geturl' => 'GetURL',
- 'golem' => 'Golem',
- 'grapnel' => 'Grapnel/0.01 Experiment',
- 'griffon' => 'Griffon ',
- 'gromit' => 'Gromit',
- 'gulliver' => 'Northern Light Gulliver',
- 'gulperbot' => 'Gulper Bot',
- 'hambot' => 'HamBot',
- 'harvest' => 'Harvest',
- 'havindex' => 'havIndex',
- 'hi' => 'HI (HTML Index) Search',
- 'hometown' => 'Hometown Spider Pro',
- 'wired-digital' => 'Wired Digital',
- 'htdig' => 'ht://Dig',
- 'htmlgobble' => 'HTMLgobble',
- 'hyperdecontextualizer' => 'Hyper-Decontextualizer',
- 'iajabot' => 'iajaBot',
- 'ibm' => 'IBM_Planetwide',
- 'iconoclast' => 'Popular Iconoclast',
- 'Ilse' => 'Ingrid',
- 'imagelock' => 'Imagelock ',
- 'incywincy' => 'IncyWincy',
- 'informant' => 'Informant',
- 'infoseeksidewinder' => 'Infoseek Sidewinder',
- 'infospider' => 'InfoSpiders',
- 'inspectorwww' => 'Inspector Web',
- 'intelliagent' => 'IntelliAgent',
- 'irobot' => 'I, Robot',
- 'iron33' => 'Iron33',
- 'israelisearch' => 'Israeli-search',
- 'javabee' => 'JavaBee',
- 'JBot' => 'JBot Java Web Robot',
- 'jcrawler' => 'JCrawler',
- 'jobo' => 'JoBo Java Web Robot',
- 'jobot' => 'Jobot',
- 'joebot' => 'JoeBot',
- 'jubii' => 'The Jubii Indexing Robot',
- 'jumpstation' => 'JumpStation',
- 'kapsi' => 'image.kapsi.net',
- 'katipo' => 'Katipo',
- 'kdd' => 'KDD-Explorer',
- 'kilroy' => 'Kilroy',
- 'ko_yappo_robot' => 'KO_Yappo_Robot',
- 'labelgrabber.txt' => 'LabelGrabber',
- 'larbin' => 'larbin',
- 'legs' => 'legs',
- 'linkidator' => 'Link Validator',
- 'linkscan' => 'LinkScan',
- 'linkwalker' => 'LinkWalker',
- 'lockon' => 'Lockon',
- 'logo_gif' => 'logo.gif Crawler',
- 'magpie' => 'Magpie',
- 'marvin' => 'marvin/infoseek',
- 'mattie' => 'Mattie',
- 'mediafox' => 'MediaFox',
- 'merzscope' => 'MerzScope',
- 'meshexplorer' => 'NEC-MeshExplorer',
- 'MindCrawler' => 'MindCrawler',
- 'mnogosearch' => 'mnoGoSearch search engine software',
- 'moget' => 'moget',
- 'momspider' => 'MOMspider',
- 'monster' => 'Monster',
- 'motor' => 'Motor',
- 'muncher' => 'Muncher',
- 'muninn' => 'Muninn',
- 'muscatferret' => 'Muscat Ferret',
- 'mwdsearch' => 'Mwd.Search',
- 'myweb' => 'Internet Shinchakubin',
- 'NDSpider' => 'NDSpider',
- 'netcarta' => 'NetCarta WebMap Engine',
- 'netmechanic' => 'NetMechanic',
- 'netscoop' => 'NetScoop',
- 'newscan-online' => 'newscan-online',
- 'nhse' => 'NHSE Web Forager',
- 'nomad' => 'Nomad',
- 'northstar' => 'The NorthStar Robot',
- 'objectssearch' => 'ObjectsSearch',
- 'occam' => 'Occam',
- 'octopus' => 'HKU WWW Octopus',
- 'OntoSpider' => 'OntoSpider',
- 'openfind' => 'Openfind data gatherer',
- 'orb_search' => 'Orb Search',
- 'packrat' => 'Pack Rat',
- 'pageboy' => 'PageBoy',
- 'parasite' => 'ParaSite',
- 'patric' => 'Patric',
- 'pegasus' => 'pegasus',
- 'perignator' => 'The Peregrinator',
- 'perlcrawler' => 'PerlCrawler 1.0',
- 'phantom' => 'Phantom',
- 'phpdig' => 'PhpDig',
- 'pitkow' => 'html_analyzer',
- 'pjspider' => 'Portal Juice Spider',
- 'pka' => 'PGP Key Agent',
- 'poppi' => 'Poppi',
- 'portalb' => 'PortalB Spider',
- 'psbot' => 'psbot',
- 'Puu' => 'GetterroboPlus Puu',
- 'python' => 'The Python Robot',
- 'raven ' => 'Raven Search',
- 'rbse' => 'RBSE Spider',
- 'resumerobot' => 'Resume Robot',
- 'rhcs' => 'RoadHouse Crawling System',
- 'rixbot' => 'RixBot',
- 'roadrunner' => 'Road Runner: The ImageScape Robot',
- 'robbie' => 'Robbie the Robot',
- 'robi' => 'ComputingSite Robi/1.0',
- 'robocrawl' => 'RoboCrawl Spider',
- 'robofox' => 'RoboFox',
- 'robozilla' => 'Robozilla',
- 'roverbot' => 'Roverbot',
- 'rules' => 'RuLeS',
- 'safetynetrobot' => 'SafetyNet Robot',
- 'scooter' => 'Scooter',
- 'search_au' => 'Search.Aus-AU.COM',
- 'search-info' => 'Sleek',
- 'searchprocess' => 'SearchProcess',
- 'senrigan' => 'Senrigan',
- 'sgscout' => 'SG-Scout',
- 'shaggy' => 'ShagSeeker',
- 'sift' => 'Sift',
- 'simbot' => 'Simmany Robot Ver1.0',
- 'site-valet' => 'Site Valet',
- 'sitetech' => 'SiteTech-Rover',
- 'skymob' => 'Skymob.com',
- 'slcrawler' => 'SLCrawler',
- 'smartspider' => 'Smart Spider',
- 'snooper' => 'Snooper',
- 'solbot' => 'Solbot',
- 'speedy' => 'Speedy Spider',
- 'spider_monkey' => 'spider_monkey',
- 'spiderbot' => 'SpiderBot',
- 'spiderline' => 'Spiderline Crawler',
- 'spiderman' => 'SpiderMan',
- 'spiderview' => 'SpiderView(tm)',
- 'spry' => 'Spry Wizard Robot',
- 'ssearcher' => 'Site Searcher',
- 'suke' => 'Suke',
- 'suntek' => 'suntek search engine',
- 'sven' => 'Sven',
- 'sygol' => 'Sygol ',
- 'tach_bw' => 'TACH Black Widow',
- 'tarantula' => 'Tarantula',
- 'tarspider' => 'tarspider',
- 'tcl' => 'Tcl W3 Robot',
- 'techbot' => 'TechBOT',
- 'templeton' => 'Templeton',
- 'titin' => 'TitIn',
- 'titan' => 'TITAN',
- 'tkwww' => 'The TkWWW Robot',
- 'tlspider' => 'TLSpider',
- 'ucsd' => 'UCSD Crawl',
- 'udmsearch' => 'UdmSearch',
- 'ultraseek' => 'Ultraseek',
- 'uptimebot' => 'UptimeBot',
- 'urlck' => 'URL Check',
- 'valkyrie' => 'Valkyrie',
- 'verticrawl' => 'Verticrawl',
- 'victoria' => 'Victoria',
- 'visionsearch' => 'vision-search',
- 'voidbot' => 'void-bot',
- 'voyager' => 'Voyager',
- 'vwbot' => 'VWbot',
- 'w3index' => 'The NWI Robot',
- 'w3m2' => 'W3M2',
- 'wallpaper' => 'WallPaper (alias crawlpaper)',
- 'wanderer' => 'the World Wide Web Wanderer',
- 'wapspider' => 'w@pSpider by wap4.com',
- 'webbandit' => 'WebBandit Web Spider',
- 'webcatcher' => 'WebCatcher',
- 'webcopy' => 'WebCopy',
- 'webfetcher' => 'webfetcher',
- 'webfoot' => 'The Webfoot Robot',
- 'webinator' => 'Webinator',
- 'weblayers' => 'weblayers',
- 'weblinker' => 'WebLinker',
- 'webmirror' => 'WebMirror',
- 'webmoose' => 'The Web Moose',
- 'webquest' => 'WebQuest',
- 'webreader' => 'Digimarc MarcSpider',
- 'webreaper' => 'WebReaper',
- 'webs' => 'webs',
- 'websnarf' => 'Websnarf',
- 'webspider' => 'WebSpider',
- 'webvac' => 'WebVac',
- 'webwalk' => 'webwalk',
- 'webwalker' => 'WebWalker',
- 'webwatch' => 'WebWatch',
- 'wget' => 'Wget',
- 'whatuseek' => 'whatUseek Winona',
- 'whowhere' => 'WhoWhere Robot',
- 'wlm' => 'Weblog Monitor',
- 'wmir' => 'w3mir',
- 'wolp' => 'WebStolperer',
- 'wombat' => 'The Web Wombat ',
- 'worm' => 'The World Wide Web Worm',
- 'wwwc' => 'WWWC Ver 0.2.5',
- 'wz101' => 'WebZinger',
- 'xget' => 'XGET',
- );
-
-
/**
* Constructor
@@ -430,8 +61,61 @@ class CI_User_agent {
if ( ! is_null($this->agent))
{
- $this->_compile_data();
+ if ($this->_load_agent_file())
+ {
+ $this->_compile_data();
+ }
+ }
+ }
+
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Compile the User Agent Data
+ *
+ * @access private
+ * @return bool
+ */
+ function _load_agent_file()
+ {
+ if ( ! @include(APPPATH.'config/user_agent'.EXT))
+ {
+ return FALSE;
+ }
+
+ $return = FALSE;
+
+ if (isset($platforms))
+ {
+ $this->platforms = $platforms;
+ unset($platforms);
+ $return = TRUE;
+ }
+
+ if (isset($browsers))
+ {
+ $this->browsers = $browsers;
+ unset($browsers);
+ $return = TRUE;
+ }
+
+ if (isset($mobiles))
+ {
+ $this->browsers = $mobiles;
+ unset($mobiles);
+ $return = TRUE;
}
+
+ if (isset($robots))
+ {
+ $this->robots = $robots;
+ unset($robots);
+ $return = TRUE;
+ }
+
+
+ return $return;
}
// --------------------------------------------------------------------
@@ -465,15 +149,17 @@ class CI_User_agent {
*/
function _set_platform()
{
- foreach ($this->platforms as $key => $val)
+ if (is_array($this->platforms) AND count($this->platforms) > 0)
{
- if (preg_match("|$key|i", $this->agent))
+ foreach ($this->platforms as $key => $val)
{
- $this->platform = $val;
- return TRUE;
+ if (preg_match("|".preg_quote($key)."|i", $this->agent))
+ {
+ $this->platform = $val;
+ return TRUE;
+ }
}
}
-
$this->platform = 'Unknown Platform';
}
@@ -487,17 +173,19 @@ class CI_User_agent {
*/
function _set_browser()
{
- foreach ($this->browsers as $key => $val)
- {
- if (preg_match("|".$key.".*?([0-9\.]+)|i", $this->agent, $match))
- {
- $this->is_browser = TRUE;
- $this->version = $match[1];
- $this->browser = $val;
- return TRUE;
+ if (is_array($this->browsers) AND count($this->browsers) > 0)
+ {
+ foreach ($this->browsers as $key => $val)
+ {
+ if (preg_match("|".preg_quote($key).".*?([0-9\.]+)|i", $this->agent, $match))
+ {
+ $this->is_browser = TRUE;
+ $this->version = $match[1];
+ $this->browser = $val;
+ return TRUE;
+ }
}
}
-
return FALSE;
}
@@ -511,39 +199,43 @@ class CI_User_agent {
*/
function _set_robot()
{
- foreach ($this->robots as $key => $val)
- {
- if (preg_match("|$key|i", $this->agent))
+ if (is_array($this->robots) AND count($this->robots) > 0)
+ {
+ foreach ($this->robots as $key => $val)
{
- $this->is_robot = TRUE;
- $this->robot = $val;
- return TRUE;
+ if (preg_match("|".preg_quote($key)."|i", $this->agent))
+ {
+ $this->is_robot = TRUE;
+ $this->robot = $val;
+ return TRUE;
+ }
}
}
-
return FALSE;
}
// --------------------------------------------------------------------
/**
- * Set the Mobile Devise
+ * Set the Mobile Device
*
* @access private
* @return bool
*/
function _set_mobile()
{
- foreach ($this->mobiles as $key => $val)
- {
- if (FALSE !== (strpos(strtolower($this->agent), $key)))
+ if (is_array($this->mobiles) AND count($this->mobiles) > 0)
+ {
+ foreach ($this->mobiles as $key => $val)
{
- $this->is_mobile = TRUE;
- $this->mobile = $val;
- return TRUE;
+ if (FALSE !== (strpos(strtolower($this->agent), $key)))
+ {
+ $this->is_mobile = TRUE;
+ $this->mobile = $val;
+ return TRUE;
+ }
}
- }
-
+ }
return FALSE;
}
@@ -559,7 +251,7 @@ class CI_User_agent {
{
if ((count($this->languages) == 0) AND isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) AND $_SERVER['HTTP_ACCEPT_LANGUAGE'] != '')
{
- $languages = preg_replace('/(;q=.+)/i', '', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+ $languages = preg_replace('/(;q=.+)/i', '', trim($_SERVER['HTTP_ACCEPT_LANGUAGE']));
$this->languages = explode(',', $languages);
}
@@ -582,7 +274,7 @@ class CI_User_agent {
{
if ((count($this->charsets) == 0) AND isset($_SERVER['HTTP_ACCEPT_CHARSET']) AND $_SERVER['HTTP_ACCEPT_CHARSET'] != '')
{
- $charsets = preg_replace('/(;q=.+)/i', '', $_SERVER['HTTP_ACCEPT_CHARSET']);
+ $charsets = preg_replace('/(;q=.+)/i', '', trim($_SERVER['HTTP_ACCEPT_CHARSET']));
$this->charsets = explode(',', $charsets);
}
@@ -712,7 +404,7 @@ class CI_User_agent {
// --------------------------------------------------------------------
/**
- * Get the Mobile Devise
+ * Get the Mobile Device
*
* @access public
* @return string
@@ -732,7 +424,7 @@ class CI_User_agent {
*/
function referrer()
{
- return ( ! isset($_SERVER['HTTP_REFERER']) OR $_SERVER['HTTP_REFERER'] == '') ? '' : $_SERVER['HTTP_REFERER'];
+ return ( ! isset($_SERVER['HTTP_REFERER']) OR $_SERVER['HTTP_REFERER'] == '') ? '' : trim($_SERVER['HTTP_REFERER']);
}
// --------------------------------------------------------------------