summaryrefslogtreecommitdiff
path: root/devel-utf8/it_browser.class
diff options
context:
space:
mode:
Diffstat (limited to 'devel-utf8/it_browser.class')
-rw-r--r--devel-utf8/it_browser.class189
1 files changed, 189 insertions, 0 deletions
diff --git a/devel-utf8/it_browser.class b/devel-utf8/it_browser.class
new file mode 100644
index 0000000..d2d2673
--- /dev/null
+++ b/devel-utf8/it_browser.class
@@ -0,0 +1,189 @@
+<?php
+/*
+** $Id$
+**
+** Copyright (C) 1995-2007 by the ITools Authors.
+** This file is part of ITools - the Internet Tools Library
+**
+** ITools is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 3 of the License, or
+** (at your option) any later version.
+**
+** ITools is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program. If not, see <http://www.gnu.org/licenses/>.
+**
+** 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; Windows 95; .NET CRL 2.0.154)"; */
+
+ /* Find "Mozilla/4.0" */
+ if (preg_match("#([^/]*)/([^ ]*)#", $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 (preg_match("#([^/]*)[/ ]([^/]*)#", $optattr[1], $regs))
+ {
+ $this->Type = $regs[1];
+ $this->Version = (double)$regs[2];
+ }
+ else
+ $this->Type = $optattr[1];
+
+ $this->Platform = !empty($optattr[2]) ? $optattr[2] : $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 = (float)$regs[1];
+ if (strstr($optattr[$i], "Linux") || $optattr[$i] == "X11")
+ $this->Platform = "Linux";
+ }
+ }
+
+ /* Find optional "[de]" */
+ if (!$this->Language && preg_match("/\[(.*)\]/", $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";
+
+ /* Read language from Accept-Language header */
+ if (!$this->Language && $_SERVER['HTTP_ACCEPT_LANGUAGE'])
+ {
+ $accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+ $this->Language = substr($accept_langs[0], 0, 2);
+ }
+
+ /* 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 */
+?>