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)); } }