From 2c6520c719c370f3ec0449fa33da699277abbeda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Mudr=C3=A1k?= Date: Fri, 1 Nov 2013 07:36:24 +0100 Subject: [PATCH] MDL-42664 Fix the filter_manager instantiation For legacy reasons, the $CFG->perfdebug uses values 7 for disabled and 15 for enabled. Because of this typo, Moodle has always created instance of the slower performance_measuring_filter_manager instead of the standard filter_manager, regardless the perfdebug setting. --- lib/filterlib.php | 2 +- lib/tests/filter_test.php | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/filterlib.php b/lib/filterlib.php index 51910de9559..a4a8617e235 100644 --- a/lib/filterlib.php +++ b/lib/filterlib.php @@ -81,7 +81,7 @@ class filter_manager { public static function instance() { global $CFG; if (is_null(self::$singletoninstance)) { - if (!empty($CFG->perfdebug)) { + if (!empty($CFG->perfdebug) and $CFG->perfdebug > 7) { self::$singletoninstance = new performance_measuring_filter_manager(); } else { self::$singletoninstance = new self(); diff --git a/lib/tests/filter_test.php b/lib/tests/filter_test.php index 2c0127b3606..41ca6fcd9e1 100644 --- a/lib/tests/filter_test.php +++ b/lib/tests/filter_test.php @@ -723,3 +723,22 @@ class filter_filter_set_applies_to_strings extends advanced_testcase { $this->assertEquals(1, $CFG->filterall); } } + + +class filter_manager_testcase extends advanced_testcase { + public function test_filter_manager_instance() { + $this->resetAfterTest(); + + set_config('perfdebug', 7); + filter_manager::reset_caches(); + $filterman = filter_manager::instance(); + $this->assertInstanceOf('filter_manager', $filterman); + $this->assertNotInstanceOf('performance_measuring_filter_manager', $filterman); + + set_config('perfdebug', 15); + filter_manager::reset_caches(); + $filterman = filter_manager::instance(); + $this->assertInstanceOf('filter_manager', $filterman); + $this->assertInstanceOf('performance_measuring_filter_manager', $filterman); + } +}