From c2a9fc91664f5c9e1116d9b23c8a9e27b2e11d8b Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Thu, 1 Mar 2007 02:08:06 +0000 Subject: [PATCH] Issue 8417: Added support for array of tested browsers to be passed to ajaxenabled() Merged in from MOODLE_18_STABLE --- lib/ajax/ajaxlib.php | 15 ++++++++++++++- lib/simpletest/testajaxlib.php | 27 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/ajax/ajaxlib.php b/lib/ajax/ajaxlib.php index 07bb5117ee3..a2bd8b8ef40 100644 --- a/lib/ajax/ajaxlib.php +++ b/lib/ajax/ajaxlib.php @@ -106,10 +106,23 @@ function ajax_get_lib($libname) { /** * Returns whether ajax is enabled/allowed or not. */ -function ajaxenabled() { +function ajaxenabled($browsers = array()) { global $CFG, $USER; + if (!empty($browsers)) { + $valid = false; + foreach ($browsers as $brand => $version) { + if (check_browser_version($brand, $version)) { + $valid = true; + } + } + + if (!$valid) { + return false; + } + } + $ie = check_browser_version('MSIE', 6.0); $ff = check_browser_version('Gecko', 20051106); $op = check_browser_version('Opera', 9.0); diff --git a/lib/simpletest/testajaxlib.php b/lib/simpletest/testajaxlib.php index 19c05ba6003..2e0ff2ff614 100644 --- a/lib/simpletest/testajaxlib.php +++ b/lib/simpletest/testajaxlib.php @@ -87,6 +87,33 @@ class ajaxlib_test extends UnitTestCase { $_SERVER['HTTP_USER_AGENT'] = $user_agents['MSIE']['5.5']['Windows 2000']; $this->assertFalse(ajaxenabled()); + + // Test array of tested browsers + $tested_browsers = array('MSIE' => 6.0, 'Gecko' => 20061111); + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Firefox']['2.0']['Windows XP']; + $this->assertTrue(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['MSIE']['7.0']['Windows XP SP2']; + $this->assertTrue(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Safari']['2.0']['Mac OS X']; + $this->assertFalse(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Opera']['9.0']['Windows XP']; + $this->assertFalse(ajaxenabled($tested_browsers)); + + $tested_browsers = array('Safari' => 412, 'Opera' => 9.0); + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Firefox']['2.0']['Windows XP']; + $this->assertFalse(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['MSIE']['7.0']['Windows XP SP2']; + $this->assertFalse(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Safari']['2.0']['Mac OS X']; + $this->assertTrue(ajaxenabled($tested_browsers)); + + $_SERVER['HTTP_USER_AGENT'] = $user_agents['Opera']['9.0']['Windows XP']; + $this->assertTrue(ajaxenabled($tested_browsers)); } }