diff options
author | Christian Schneider | 2007-10-11 00:39:30 +0000 |
---|---|---|
committer | Christian Schneider | 2007-10-11 00:39:30 +0000 |
commit | 35fe33f7364329dacf415c950bff01b6de9ef88e (patch) | |
tree | b0e6b018b50038ca20266723c53750268f508df5 /it_browser.class | |
parent | 1f95711ff3e9697cd85a54545ab42e5fd3611317 (diff) | |
download | itools-35fe33f7364329dacf415c950bff01b6de9ef88e.tar.gz itools-35fe33f7364329dacf415c950bff01b6de9ef88e.tar.bz2 itools-35fe33f7364329dacf415c950bff01b6de9ef88e.zip |
Populated release branch
Diffstat (limited to 'it_browser.class')
-rw-r--r-- | it_browser.class | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/it_browser.class b/it_browser.class new file mode 100644 index 0000000..e67b658 --- /dev/null +++ b/it_browser.class @@ -0,0 +1,178 @@ +<?php +/* +** $Id$ +** +** ITools - the Internet Tools Library +** +** Copyright (C) 1995-2003 by the ITools Authors. +** This program is free software; you can redistribute it and/or +** modify it under the terms of either the GNU General Public License +** or the GNU Lesser General Public License, as published by the Free +** Software Foundation. See http://www.gnu.org/licenses/ for details. +** +** Class it_Browser: Browser capability class +** For a good list see http://www.msb.edu/dept/msbtc/waehner/browser/ +** +** Inspired by browser.pinc,v 1.1.1.1 1999/03/23 14:51:39 bobak Exp +*/ + +/** + * Browser capabilities class + * var $Type string: Browser type, "Netscape", "MSIE", "Konqueror", "Opera", "Safari", "Gecko" etc. + * var $Version float: Browser-Version x.y for all brands + * var $Platform string: "Win95", "Macintosh", "Linux" ... may be wrong + * var $Language string: Browser's language, "de", "en", ... or unset + * var $HTMLVersion float: Suported HTML version x.y + * var $JavaScript bool: Browser supports Javascript + * var $CSS bool: Browser supports Style sheets + * var $TextOnly bool: Browser supports only text, no graphics + */ +class it_browser +{ + /* Generic attributes */ + var $UserAgent; /* string: Unparsed HTTP_USER_AGENT */ + var $Type = ''; /* string: Browser type, "Netscape", "MSIE", etc. */ + var $Version; /* float: Browser-Version x.y for all brands */ + var $Platform; /* string: "Win95", "Macintosh", "Linux" ... may be wrong */ + var $Language; /* string: Browser's language, "de", "en", ... or unset */ + var $HTMLVersion=0; /* float: Suported HTML version x.y */ + var $JavaScript=0; /* bool: Browser supports Javascript */ + var $CSS=1; /* int: Style sheet level (0..3) */ + var $CSSFilter=0; /* bool: Is MSIE and supports CSS filter: property */ + var $TextOnly=0; /* bool: Browser supports only text, no graphics */ + var $VML=0; /* bool: Browser support VectorMarkupLanguage */ + var $Canvas=0; /* bool: Supports Canvas */ + var $XMLHTTP=0; /* bool: Browser supports XMLHTTP requests */ + + /* Browser specific stuff (DEPRECATED, use generic attributes above) */ + var $MSIE; /* float: Microsoft Internet Explorer Version or 0 */ + var $NS; /* float: Netscape Navigator Version or 0 */ + +/** + * Constructor: Initializes public fields with browser capabilities + */ +function it_browser() +{ + $this->UserAgent = $_SERVER['HTTP_USER_AGENT']; + /* $this->UserAgent = "Mozilla/4.0 [de] (compatible; MSIE 5.0; Bill Gates 1.0; Windows 95)"; */ + + /* Find "Mozilla/4.0" */ + if (ereg("([^/]*)/([^ ]*)", $this->UserAgent, $regs)) + { + $this->Type = $regs[1]; + $this->Version = (double)$regs[2]; + } + + /* Find optional "(compatible; MSIE 3.0; Win95)" */ + if (preg_match("/\((.+)\)/U", $this->UserAgent, $regs)) + { + $optattr = preg_split("/;\s+/", $regs[1]); + if ($optattr[0] == "compatible") + { + if (ereg("([^/]*)[/ ]([^/]*)", $optattr[1], $regs)) + { + $this->Type = $regs[1]; + $this->Version = (double)$regs[2]; + } + else + $this->Type = $optattr[1]; + + $this->Platform = $optattr[count($optattr)-1]; + } + else + $this->Platform = $optattr[0]; + + for ($i=1; $i < count($optattr); $i++) + { + if (preg_match("/^([a-z]{2})(\-[a-z]{2})?$/i", $optattr[$i], $regs)) + $this->Language = $regs[1]; + if (preg_match("/^rv:([0-9\.]+)/", $optattr[$i], $regs)) + $this->Version = floatval($regs[1]); + if (strstr($optattr[$i], "Linux") || $optattr[$i] == "X11") + $this->Platform = "Linux"; + } + } + + /* Find optional "[de]" */ + if (!$this->Language && ereg("\[(.*)\]", $this->UserAgent, $regs)) + $this->Language = $regs[1]; + + /* Check for Safari/KHTML */ + if (preg_match("/(Safari|AppleWebKit)\/([0-9\.]+)/", $this->UserAgent, $regs)) + { + $this->Type = "Safari"; + $this->Version = floatval($regs[2]); + } + + /* Check for Gecko based browser */ + if ($this->Type == "Mozilla" && preg_match("/[^a-z]Gecko[^a-z]/", $this->UserAgent)) + $this->Type = "Gecko"; + else if ($this->Type == "Mozilla" && $this->Version < 5) + $this->Type = "Netscape"; + + + /* And now for the browser capabilities ... */ + if ($this->Type == "MSIE") + { + $this->MSIE = $this->Version; + $this->HTMLVersion = 4.0; + $this->JavaScript = true; + $this->VML = ($this->Version >= 5.5); + $this->XMLHTTP = ($this->Version >= 5); + $this->CSS = $this->Version >= 4.0 ? 2 : 1; + $this->CSSFilter = ($this->Version >= 5.0); + } + else if ($this->Type == "Opera") + { + $this->Opera = $this->Version; + if ($this->Version >= 3.5) + { + $this->HTMLVersion = 4.0; + $this->CSS = 2; + } + else + { + $this->HTMLVersion = 3.2; + $this->CSS = 1; + } + $this->JavaScript = true; + $this->XMLHTTP = ($this->Version >= 8); + } + else if ($this->Type == "Konqueror") + { + $this->HTMLVersion = 4.0; + $this->CSS = 2; + $this->JavaScript = true; + $this->XMLHTTP = ($this->Version >= 3); + } + else if ($this->Type == "Netscape") + { + $this->NS = $this->Version; + $this->HTMLVersion = 4.0; + $this->JavaScript = true; + + if ($this->Version >= 5.0) + $this->CSS = 2; + } + else if ($this->Type == "Gecko") + { + $this->HTMLVersion = 4.0; + $this->CSS = 2; + $this->JavaScript = true; + $this->XMLHTTP = true; + $this->Canvas = ($this->Version >= 1.8); + } + else if ($this->Type == "Safari") + { + $this->HTMLVersion = 4.0; + $this->JavaScript = true; + $this->CSS = 2; + $this->XMLHTTP = true; + $this->Canvas = ($this->Version >= 418); + } + else if ($this->Type == "Lynx") + $this->TextOnly = 1; +} + +} /* End Class it_Browser */ +?> |