Bladeren bron

Fix regression

Laurent Destailleur 2 jaren geleden
bovenliggende
commit
65a2093cd1
2 gewijzigde bestanden met toevoegingen van 8 en 7 verwijderingen
  1. 6 6
      htdocs/core/lib/functions.lib.php
  2. 2 1
      test/phpunit/FunctionsLibTest.php

+ 6 - 6
htdocs/core/lib/functions.lib.php

@@ -340,13 +340,13 @@ function getBrowserInfo($user_agent)
 	$reg = array();
 	if (preg_match('/firefox(\/|\s)([\d\.]*)/i', $user_agent, $reg)) {
 		$name = 'firefox';
-		$version = $reg[2];
+		$version = empty($reg[2]) ? '' : $reg[2];
 	} elseif (preg_match('/edge(\/|\s)([\d\.]*)/i', $user_agent, $reg)) {
 		$name = 'edge';
-		$version = $reg[2];
+		$version = empty($reg[2]) ? '' : $reg[2];
 	} elseif (preg_match('/chrome(\/|\s)([\d\.]+)/i', $user_agent, $reg)) {
 		$name = 'chrome';
-		$version = $reg[2];
+		$version = empty($reg[2]) ? '' : $reg[2];
 	} elseif (preg_match('/chrome/i', $user_agent, $reg)) {
 		// we can have 'chrome (Mozilla...) chrome x.y' in one string
 		$name = 'chrome';
@@ -356,11 +356,11 @@ function getBrowserInfo($user_agent)
 		$name = 'epiphany';
 	} elseif (preg_match('/safari(\/|\s)([\d\.]*)/i', $user_agent, $reg)) {
 		$name = 'safari';
-		$version = $reg[2];
+		$version = empty($reg[2]) ? '' : $reg[2];
 	} elseif (preg_match('/opera(\/|\s)([\d\.]*)/i', $user_agent, $reg)) {
 		// Safari is often present in string for mobile but its not.
 		$name = 'opera';
-		$version = $reg[2];
+		$version = empty($reg[2]) ? '' : $reg[2];
 	} elseif (preg_match('/(MSIE\s([0-9]+\.[0-9]))|.*(Trident\/[0-9]+.[0-9];.*rv:([0-9]+\.[0-9]+))/i', $user_agent, $reg)) {
 		$name = 'ie';
 		$version = end($reg);
@@ -371,7 +371,7 @@ function getBrowserInfo($user_agent)
 	} elseif (preg_match('/l[iy]n(x|ks)(\(|\/|\s)*([\d\.]+)/i', $user_agent, $reg)) {
 		// MS products at end
 		$name = 'lynxlinks';
-		$version = $reg[4];
+		$version = empty($reg[3]) ? '' : $reg[3];
 	}
 
 	if ($tablet) {

+ 2 - 1
test/phpunit/FunctionsLibTest.php

@@ -443,10 +443,11 @@ class FunctionsLibTest extends PHPUnit\Framework\TestCase
 		$this->assertEquals('tablet', $tmp['layout']);
 		$this->assertEquals('iphone', $tmp['phone']);
 
-		//iPad
+		//Lynx
 		$user_agent = 'Lynx/2.8.8dev.3 libwww‑FM/2.14 SSL‑MM/1.4.1';
 		$tmp=getBrowserInfo($user_agent);
 		$this->assertEquals('lynxlinks', $tmp['browsername']);
+		$this->assertEquals('2.8.8', $tmp['browserversion']);
 		$this->assertEquals('unknown', $tmp['browseros']);
 		$this->assertEquals('classic', $tmp['layout']);
 	}