diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 90167a94b87..7a738d2c60b 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -221,6 +221,41 @@ function getEntity($element=false, $shared=false)
}
}
+/**
+ * Return information about user browser
+ *
+ * @return array Array of information ('browsername'=>,'browseros'=>,'phone'=>,'browserfirefox'=>)
+ */
+function getBrowserInfo()
+{
+ $name='unknown'; $version=''; $os='unknown'; $phone='';
+
+ // If phone/smartphone, we set phone os name.
+ if (preg_match('/android/i',$_SERVER["HTTP_USER_AGENT"])) { $os=$phone='android'; }
+ elseif (preg_match('/blackberry/i',$_SERVER["HTTP_USER_AGENT"])) { $os=$phone='blackberry'; }
+ elseif (preg_match('/iphone/i',$_SERVER["HTTP_USER_AGENT"])) { $os='ios'; $phone='iphone'; }
+ elseif (preg_match('/ipod/i',$_SERVER["HTTP_USER_AGENT"])) { $os='ios'; $phone='iphone'; }
+ elseif (preg_match('/palm/i',$_SERVER["HTTP_USER_AGENT"])) { $os=$phone='palm'; }
+ elseif (preg_match('/symbian/i',$_SERVER["HTTP_USER_AGENT"])) { $os='symbian'; $phone='unknown'; }
+ elseif (preg_match('/webos/i',$_SERVER["HTTP_USER_AGENT"])) { $os='webos'; $phone='unknown'; }
+ elseif (preg_match('/maemo/i',$_SERVER["HTTP_USER_AGENT"])) { $os='maemo'; $phone='unknown'; }
+ // MS products at end
+ elseif (preg_match('/iemobile/i',$_SERVER["HTTP_USER_AGENT"])) { $os='windows'; $phone='unkown'; }
+ elseif (preg_match('/windows ce/i',$_SERVER["HTTP_USER_AGENT"])) { $os='windows'; $phone='unkown'; }
+ // Name
+ if (preg_match('/firefox(\/|\s)*([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"],$reg)) { $name='firefox'; $version=$reg[2]; }
+ elseif (preg_match('/chrome(\/|\s)*([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"],$reg)) { $name='chrome'; $version=$reg[2]; }
+ elseif (preg_match('/iceweasel/i',$_SERVER["HTTP_USER_AGENT"])) { $name='iceweasel'; $version=$reg[2]; }
+ elseif ((empty($phone) || preg_match('/iphone/i',$_SERVER["HTTP_USER_AGENT"])) && preg_match('/safari(\/|\s)*([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"],$reg)) { $name='safari'; $version=$reg[2]; } // Safari is often present in string for mobile but its not.
+ elseif (preg_match('/opera(\/|\s)*([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"],$reg)) { $name='opera'; $version=$reg[2]; }
+ elseif (preg_match('/msie(\/|\s)*([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"],$reg)) { $name='ie'; $version=$reg[2]; } // MS products at end
+ // Other
+ $firefox=0;
+ if (in_array($name,array('firefox','iceweasel'))) $firefox=1;
+
+ return array('browsername'=>$name, 'browserversion'=>$version, 'browseros'=>$os, 'phone'=>$phone, 'browserfirefox'=>$firefox);
+}
+
/**
* Function called at end of web php process
*
diff --git a/htdocs/install/check.php b/htdocs/install/check.php
index bb2f7725810..5a3c75ee7b9 100644
--- a/htdocs/install/check.php
+++ b/htdocs/install/check.php
@@ -63,6 +63,16 @@ print '';
print ''.$langs->trans("MiscellanousChecks").":
\n";
+// Check browser
+$useragent=$_SERVER['HTTP_USER_AGENT'];
+if (! empty($useragent))
+{
+ $tmp=getBrowserInfo();
+ $browserversion=$tmp['browserversion'];
+ $browsername=$tmp['browsername'];
+ if ($browsername == 'ie' && $browserversion < 7) print '
'.$langs->trans("WarningBrowserTooOld")."
\n";
+}
+
// Check PHP version
if (versioncompare(versionphparray(),array(4,3,10)) < 0) // Minimum to use (error if lower)
diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang
index f40d500f2cf..dba222094c1 100644
--- a/htdocs/langs/en_US/install.lang
+++ b/htdocs/langs/en_US/install.lang
@@ -32,6 +32,7 @@ ErrorConnectedButDatabaseNotFound=Connection to server successfull but database
ErrorDatabaseAlreadyExists=Database '%s' already exists.
IfDatabaseNotExistsGoBackAndUncheckCreate=If database does not exists, go back and check option "Create database".
IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option.
+WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded.
PHPVersion=PHP Version
YouCanContinue=You can continue...
PleaseBePatient=Please be patient...
diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang
index 8c772dc390f..411499210c9 100644
--- a/htdocs/langs/fr_FR/install.lang
+++ b/htdocs/langs/fr_FR/install.lang
@@ -32,6 +32,7 @@ ErrorConnectedButDatabaseNotFound=Connexion au serveur réussi mais base '%s' in
ErrorDatabaseAlreadyExists=La base de données '%s' existe déjà.
IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base n'existe pas, revenez en arrière et cochez l'option "Créer la base de données".
IfDatabaseExistsGoBackAndCheckCreate=Si la base existe déjà, revenez en arrière et désactiver l'option "Créer la base de données".
+WarningBrowserTooOld=Version de navigateur trop ancienne. Nous vous recommandons de mettre à jour vers un version récente de Firefox, Chrome ou Opera.
PHPVersion=Version PHP
YouCanContinue=Vous pouvez continuer...
PleaseBePatient=Merci de patienter...
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index aaf62d3ae87..5409712b6b0 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -8,17 +8,17 @@
* Copyright (C) 2011 Philippe Grand
* Copyright (C) 2008 Matteli
* Copyright (C) 2011 Juanjo Menent
- *
+ *
* This program 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 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program 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 .
*/
@@ -174,30 +174,12 @@ register_shutdown_function('dol_shutdown');
// Detection browser
if (isset($_SERVER["HTTP_USER_AGENT"]))
{
- // If phone/smartphone, we set phone os name.
- if (preg_match('/android/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='android';
- elseif (preg_match('/blackberry/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='blackberry';
- elseif (preg_match('/iphone/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='iphone';
- elseif (preg_match('/ipod/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='iphone';
- elseif (preg_match('/palm/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='palm';
- elseif (preg_match('/symbian/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='symbian';
- elseif (preg_match('/webos/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='webos';
- elseif (preg_match('/maemo/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='maemo';
- // MS products at end
- elseif (preg_match('/iemobile/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='windowsmobile';
- elseif (preg_match('/windows ce/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->phone='windowsmobile';
- // Name
- if (preg_match('/firefox/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='firefox';
- elseif (preg_match('/chrome/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='chrome';
- elseif (preg_match('/iceweasel/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='iceweasel';
- elseif ((empty($conf->browser->phone) || preg_match('/iphone/i',$_SERVER["HTTP_USER_AGENT"])) && preg_match('/safari/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='safari'; // Safari is often present in string but its not.
- elseif (preg_match('/opera/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='opera';
- // MS products at end
- elseif (preg_match('/msie/i',$_SERVER["HTTP_USER_AGENT"])) $conf->browser->name='ie';
- else $conf->browser->name='unknown';
- // Other
- if (in_array($conf->browser->name,array('firefox','iceweasel'))) $conf->browser->firefox=1;
- //$conf->browser->phone='android';
+ $tmp=getBrowserInfo();
+ $conf->browser->phone=$tmp['phone'];
+ $conf->browser->name=$tmp['browsername'];
+ $conf->browser->os=$tmp['browseros'];
+ $conf->browser->firefox=$tmp['browserfirefox'];
+ $conf->browser->version=$tmp['browserversion'];
}
@@ -1065,7 +1047,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a
global $user, $conf, $langs, $db;
global $dolibarr_main_authentication;
global $hookmanager;
-
+
// Instantiate hooks of thirdparty module only if not already define
if (! is_object($hookmanager))
{
diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php
index c38e06efda2..9a7cfc78d57 100644
--- a/htdocs/product/liste.php
+++ b/htdocs/product/liste.php
@@ -213,7 +213,6 @@ else
$fieldlist = $object->field_list;
$datas = $object->list_datas;
$picto='title.png';
- if (empty($conf->browser->firefox)) $picto='title.gif';
$title_picto = img_picto('',$picto);
$title_text = $title;
diff --git a/test/phpunit/FunctionsTest.php b/test/phpunit/FunctionsTest.php
index 3824e81803c..c1983502df8 100755
--- a/test/phpunit/FunctionsTest.php
+++ b/test/phpunit/FunctionsTest.php
@@ -117,6 +117,35 @@ class FunctionsTest extends PHPUnit_Framework_TestCase
}
+ /**
+ * testDolHtmlCleanLastBr
+ *
+ * @return void
+ */
+ public function testGetBrowserVersion()
+ {
+ $_SERVER['HTTP_USER_AGENT']='Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt; KITV4 Wanadoo; KITV5 Wanadoo)'; // MSIE 5.0
+ $tmp=getBrowserInfo();
+ $this->assertEquals('ie',$tmp['browsername']);
+ $this->assertEquals('5.0',$tmp['browserversion']);
+ $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firefox/0.9.1'; // Firefox 0.9.1
+ $tmp=getBrowserInfo();
+ $this->assertEquals('firefox',$tmp['browsername']);
+ $this->assertEquals('0.9.1',$tmp['browserversion']);
+ $_SERVER['HTTP_USER_AGENT']='Mozilla/3.0 (Windows 98; U) Opera 6.03 [en]';
+ $tmp=getBrowserInfo();
+ $this->assertEquals('opera',$tmp['browsername']);
+ $this->assertEquals('6.03',$tmp['browserversion']);
+ $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21';
+ $tmp=getBrowserInfo();
+ $this->assertEquals('chrome',$tmp['browsername']);
+ $this->assertEquals('19.0.1042.0',$tmp['browserversion']);
+ $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1';
+ $tmp=getBrowserInfo();
+ $this->assertEquals('safari',$tmp['browsername']);
+ $this->assertEquals('533.21.1',$tmp['browserversion']);
+ }
+
/**
* testDolHtmlCleanLastBr
*