From ad99ed4526fc0530ce8669c462b76c8a70047a23 Mon Sep 17 00:00:00 2001 From: jennylee Date: Mon, 20 Oct 2014 17:41:47 -0400 Subject: [PATCH] PM-483 FEATURE. Warning al ingresar a PM desde un browser no soportado. Se aniadio la funcion detectBrowser() en la clase G, para poder determinar desde sysLogin.php(login sin variables en cache) y Login.php(login con variables en cache) desde que browser accede el usuario y lanzar un warning para avisarle si soportamos o no dicho navegador. Se uso los datos de la Wiki (http://wiki.processmaker.com/index.php/2.0/ProcessMaker_Installation_Requirements#Web_Browser_Compatibility) para la version 2.5.0 de pm como minimas versiones soportadas para PM2.8 (se detalla a continuacion). Versiones soportadas para PM 2.8: - IE -> 8, 9, 10, 11 - Chrome -> 26.0.x en adelante. - Firefox -> 20.x en adelante. --- gulliver/system/class.g.php | 43 ++++++++++++++++++++++ workflow/engine/methods/login/login.php | 7 ++++ workflow/engine/methods/login/sysLogin.php | 7 ++++ 3 files changed, 57 insertions(+) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index 0db4130ac..02523e5db 100755 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -5518,6 +5518,49 @@ class G return $res; } } + + /** + * Get the actual browser. + */ + public function getActualBrowser(){ + $browser=array("TRIDENT","IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI","CHROME"); + $info['browser'] = "OTHER"; + + foreach($browser as $parent){ + if($parent == 'TRIDENT'){ + $parent = "RV"; + } + $s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent); + $f = $s + strlen($parent); + $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 15); + $version = preg_replace('/[^0-9,.]/','',$version); + if ($s){ + $info['browser'] = $parent; + $info['version'] = $version; + } + } + + $info['browser'] = ($info['browser']=='RV')? 'IE':$info['browser']; + return $info; + } + + /** + * Check the browser compativility + */ + public function checkBrowserCompatibility($browser = null, $version = null){ + if($browser == null || $version == null){ + $info = G::getActualBrowser(); + $browser = $info['browser']; + $version = $info['version']; + } + if ((($browser== 'IE') && (($version >= 8) && ($version <= 11))) || + (($browser== 'CHROME') && ($version >= 26)) || + (($browser== 'FIREFOX') && ($version >= 20)) + ){ + return true; + } + return false; + } } /** diff --git a/workflow/engine/methods/login/login.php b/workflow/engine/methods/login/login.php index d6817e320..a6f201149 100755 --- a/workflow/engine/methods/login/login.php +++ b/workflow/engine/methods/login/login.php @@ -22,6 +22,13 @@ * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ +//Browser Compatibility +$browserSupported = G::checkBrowserCompatibility(); +if ($browserSupported==false){ + if(!isset($_SESSION['G_MESSAGE']) || $_SESSION['G_MESSAGE'] == ""){ + G::SendTemporalMessage ('ID_BROWSER_NOT_SUPPORTED', 'warning'); + } +} $aFields = array(); diff --git a/workflow/engine/methods/login/sysLogin.php b/workflow/engine/methods/login/sysLogin.php index ab76b29e0..3097376c3 100755 --- a/workflow/engine/methods/login/sysLogin.php +++ b/workflow/engine/methods/login/sysLogin.php @@ -22,6 +22,13 @@ * Coral Gables, FL, 33134, USA, or email info@colosa.com. * */ +//Browser Compatibility +$browserSupported = G::checkBrowserCompatibility(); +if ($browserSupported==false){ + if(!isset($_SESSION['G_MESSAGE']) || $_SESSION['G_MESSAGE'] == ""){ + G::SendTemporalMessage ('ID_BROWSER_NOT_SUPPORTED', 'warning'); + } +} if (isset ($_POST['form']['USER_ENV'])) { @session_destroy();