. ** ** 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 */ ?>