summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/libraries/User_agent.php645
1 files changed, 645 insertions, 0 deletions
diff --git a/system/libraries/User_agent.php b/system/libraries/User_agent.php
new file mode 100644
index 000000000..33e8451c6
--- /dev/null
+++ b/system/libraries/User_agent.php
@@ -0,0 +1,645 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * Code Igniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package CodeIgniter
+ * @author Rick Ellis
+ * @copyright Copyright (c) 2006, pMachine, Inc.
+ * @license http://www.codeignitor.com/user_guide/license.html
+ * @link http://www.codeigniter.com
+ * @since Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * User Agent Class
+ *
+ * Identifies the platform, browser, robot, or mobile devise of the browsing agent
+ *
+ * @package CodeIgniter
+ * @subpackage Libraries
+ * @category User Agent
+ * @author Rick Ellis
+ * @link http://www.codeigniter.com/user_guide/libraries/uri.html
+ */
+class CI_User_agent {
+
+ var $agent = NULL;
+
+ var $is_browser = FALSE;
+ var $is_robot = FALSE;
+ var $is_mobile = FALSE;
+
+ var $platform = '';
+ var $browser = '';
+ var $version = '';
+ 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',
+ 'mac os x' => 'Mac OS X',
+ 'freebsd' => 'FreeBSD',
+ 'ppc' => 'Macintosh',
+ 'sunos' => 'Sun Solaris',
+ 'linux' => 'Linux',
+ 'debian' => 'Debian',
+ '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',
+ 'Camino' => 'Camino',
+ 'Mozilla' => 'Mozilla',
+ 'Safari' => 'Safari',
+ 'Konqueror' => 'Konqueror',
+ 'Lynx' => 'Lynx',
+ 'ANTFresco' => 'Fresco'
+ );
+
+ 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
+ *
+ * Sets the User Agent and runs the compilation routine
+ *
+ * @access public
+ * @return void
+ */
+ function CI_User_agent()
+ {
+ if (isset($_SERVER['HTTP_USER_AGENT']))
+ {
+ $this->agent = trim($_SERVER['HTTP_USER_AGENT']);
+ }
+
+ if ( ! is_null($this->agent))
+ {
+ $this->_compile_data();
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Compile the User Agent Data
+ *
+ * @access private
+ * @return bool
+ */
+ function _compile_data()
+ {
+ $this->_set_platform();
+
+ foreach (array('_set_browser', '_set_robot', '_set_mobile') as $function)
+ {
+ if ($this->$function() === TRUE)
+ {
+ break;
+ }
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set the Platform
+ *
+ * @access private
+ * @return mixed
+ */
+ function _set_platform()
+ {
+ foreach ($this->platforms as $key => $val)
+ {
+ if (preg_match("|$key|i", $this->agent))
+ {
+ $this->platform = $val;
+ return TRUE;
+ }
+ }
+
+ $this->platform = 'Unknown Platform';
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set the Browser
+ *
+ * @access private
+ * @return bool
+ */
+ 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;
+ }
+ }
+
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set the Robot
+ *
+ * @access private
+ * @return bool
+ */
+ function _set_robot()
+ {
+ foreach ($this->robots as $key => $val)
+ {
+ if (preg_match("|$key|i", $this->agent))
+ {
+ $this->is_robot = TRUE;
+ $this->robot = $val;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set the Mobile Devise
+ *
+ * @access private
+ * @return bool
+ */
+ function _set_mobile()
+ {
+ foreach ($this->mobiles as $key => $val)
+ {
+ if (FALSE !== (strpos(strtolower($this->agent), $key)))
+ {
+ $this->is_mobile = TRUE;
+ $this->mobile = $val;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+ }
+
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Is Browser
+ *
+ * @access public
+ * @return bool
+ */
+ function is_browser()
+ {
+ return $this->is_browser;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Is Robot
+ *
+ * @access public
+ * @return bool
+ */
+ function is_robot()
+ {
+ return $this->is_robot;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Is Mobile
+ *
+ * @access public
+ * @return bool
+ */
+ function is_mobile()
+ {
+ return $this->is_mobile;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Get Platform
+ *
+ * @access public
+ * @return string
+ */
+ function get_platform()
+ {
+ return $this->platform;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Get Browser Name
+ *
+ * @access public
+ * @return string
+ */
+ function get_browser()
+ {
+ return $this->browser;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Get the Browser Version
+ *
+ * @access public
+ * @return string
+ */
+ function get_version()
+ {
+ return $this->version;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Get The Robot Name
+ *
+ * @access public
+ * @return string
+ */
+ function get_robot()
+ {
+ return $this->robot;
+ }
+ // --------------------------------------------------------------------
+
+ /**
+ * Get the Mobile Devise
+ *
+ * @access public
+ * @return string
+ */
+ function get_mobile()
+ {
+ return $this->mobile;
+ }
+
+
+}
+
+?> \ No newline at end of file