From 8fac075a5c3a4f8d4e12a971baa7891c4d9bac38 Mon Sep 17 00:00:00 2001 From: Michael de Raadt Date: Fri, 25 Oct 2013 09:01:21 +0800 Subject: [PATCH] MDL-42491 libraries: add exception for IE11 (and hopefully later versions) --- lib/moodlelib.php | 3 +++ lib/tests/moodlelib_test.php | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index e92ce90be86..d001380ed10 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -8820,6 +8820,9 @@ function check_php_version($version='5.2.4') { // See: http://www.useragentstring.com/pages/Internet%20Explorer/ if (preg_match("/MSIE ([0-9\.]+)/", $agent, $match)) { $browser = $match[1]; + // See: http://msdn.microsoft.com/en-us/library/ie/bg182625%28v=vs.85%29.aspx for IE11+ useragent details. + } else if (preg_match("/Trident\/[0-9\.]+/", $agent) && preg_match("/rv:([0-9\.]+)/", $agent, $match)) { + $browser = $match[1]; } else { return false; } diff --git a/lib/tests/moodlelib_test.php b/lib/tests/moodlelib_test.php index 2c6cfc6238c..bc80f177c28 100644 --- a/lib/tests/moodlelib_test.php +++ b/lib/tests/moodlelib_test.php @@ -45,6 +45,7 @@ class moodlelib_testcase extends advanced_testcase { '9.0i' => array('Windows 7' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)'), '10.0' => array('Windows 8' => 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Touch)'), '10.0i' => array('Windows 8' => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Trident/6.0; Touch; .NET4.0E; .NET4.0C; Tablet PC 2.0)'), + '11.0' => array('Windows 8.1' => 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0)'), ), 'Firefox' => array( '1.0.6' => array('Windows XP' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6'), @@ -301,6 +302,15 @@ class moodlelib_testcase extends advanced_testcase { $this->assertTrue(check_browser_version('MSIE', '10')); $this->assertFalse(check_browser_version('MSIE', '11')); + $_SERVER['HTTP_USER_AGENT'] = $this->user_agents['MSIE']['11.0']['Windows 8.1']; + $this->assertTrue(check_browser_version('MSIE')); + $this->assertTrue(check_browser_version('MSIE', 0)); + $this->assertTrue(check_browser_version('MSIE', '5.0')); + $this->assertTrue(check_browser_version('MSIE', '9.0')); + $this->assertTrue(check_browser_version('MSIE', '10')); + $this->assertTrue(check_browser_version('MSIE', '11')); + $this->assertFalse(check_browser_version('MSIE', '12')); + $_SERVER['HTTP_USER_AGENT'] = $this->user_agents['Firefox']['2.0']['Windows XP']; $this->assertTrue(check_browser_version('Firefox')); $this->assertTrue(check_browser_version('Firefox', '1.5'));