+-----------------------------------------------------------------------+
| program/include/rcube_browser.php |
| |
- | This file is part of the RoundCube Webmail client |
- | Copyright (C) 2007-2009, RoundCube Dev. - Switzerland |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2007-2009, Roundcube Dev. - Switzerland |
| Licensed under the GNU GPL |
| |
| PURPOSE: |
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
- $Id: rcube_browser.php 328 2006-08-30 17:41:21Z thomasb $
+ $Id: rcube_browser.php 3989 2010-09-25 13:03:53Z alec $
*/
{
function __construct()
{
- $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
+ $HTTP_USER_AGENT = strtolower($_SERVER['HTTP_USER_AGENT']);
$this->ver = 0;
- $this->win = stristr($HTTP_USER_AGENT, 'win');
- $this->mac = stristr($HTTP_USER_AGENT, 'mac');
- $this->linux = stristr($HTTP_USER_AGENT, 'linux');
- $this->unix = stristr($HTTP_USER_AGENT, 'unix');
+ $this->win = strstr($HTTP_USER_AGENT, 'win');
+ $this->mac = strstr($HTTP_USER_AGENT, 'mac');
+ $this->linux = strstr($HTTP_USER_AGENT, 'linux');
+ $this->unix = strstr($HTTP_USER_AGENT, 'unix');
- $this->opera = stristr($HTTP_USER_AGENT, 'opera');
- $this->ns4 = stristr($HTTP_USER_AGENT, 'mozilla/4') && !stristr($HTTP_USER_AGENT, 'msie');
- $this->ns = ($this->ns4 || stristr($HTTP_USER_AGENT, 'netscape'));
- $this->ie = stristr($HTTP_USER_AGENT, 'compatible; msie') && !$this->opera;
- $this->mz = stristr($HTTP_USER_AGENT, 'mozilla/5');
- $this->khtml = stristr($HTTP_USER_AGENT, 'khtml');
- $this->safari = ($this->khtml || stristr($HTTP_USER_AGENT, 'safari'));
+ $this->opera = strstr($HTTP_USER_AGENT, 'opera');
+ $this->ns4 = strstr($HTTP_USER_AGENT, 'mozilla/4') && !strstr($HTTP_USER_AGENT, 'msie');
+ $this->ns = ($this->ns4 || strstr($HTTP_USER_AGENT, 'netscape'));
+ $this->ie = !$this->opera && strstr($HTTP_USER_AGENT, 'compatible; msie');
+ $this->mz = strstr($HTTP_USER_AGENT, 'mozilla/5');
+ $this->chrome = strstr($HTTP_USER_AGENT, 'chrome');
+ $this->khtml = strstr($HTTP_USER_AGENT, 'khtml');
+ $this->safari = !$this->chrome && ($this->khtml || strstr($HTTP_USER_AGENT, 'safari'));
- if ($this->ns) {
- $test = preg_match('/mozilla\/([0-9.]+)/i', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[1] : 0;
+ if ($this->ns || $this->chrome) {
+ $test = preg_match('/(mozilla|chrome)\/([0-9.]+)/', $HTTP_USER_AGENT, $regs);
+ $this->ver = $test ? (float)$regs[2] : 0;
}
- if ($this->mz) {
+ else if ($this->mz) {
$test = preg_match('/rv:([0-9.]+)/', $HTTP_USER_AGENT, $regs);
$this->ver = $test ? (float)$regs[1] : 0;
}
- if($this->ie) {
- $test = preg_match('/msie ([0-9.]+)/i', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[1] : 0;
- }
- if ($this->opera) {
- $test = preg_match('/opera ([0-9.]+)/i', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[1] : 0;
+ else if ($this->ie || $this->opera) {
+ $test = preg_match('/(msie|opera) ([0-9.]+)/', $HTTP_USER_AGENT, $regs);
+ $this->ver = $test ? (float)$regs[2] : 0;
}
- if (preg_match('/ ([a-z]{2})-([a-z]{2})/i', $HTTP_USER_AGENT, $regs))
+ if (preg_match('/ ([a-z]{2})-([a-z]{2})/', $HTTP_USER_AGENT, $regs))
$this->lang = $regs[1];
else
$this->lang = 'en';
$this->pngalpha = $this->mz || $this->safari || ($this->ie && $this->ver>=5.5) ||
($this->ie && $this->ver>=5 && $this->mac) || ($this->opera && $this->ver>=7) ? true : false;
}
- }
+}