From c928c607185bbc659421701a33e06246b7e36c96 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/filterlib_test.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/filterlib.php b/lib/filterlib.php index 5f848ec604f..0f6072c1dfd 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/filterlib_test.php b/lib/tests/filterlib_test.php index 2db0568e2e0..e769e087eaf 100644 --- a/lib/tests/filterlib_test.php +++ b/lib/tests/filterlib_test.php @@ -660,4 +660,19 @@ class core_filterlib_testcase extends advanced_testcase { $this->assertEquals('emailprotect,multilang', $CFG->stringfilters); $this->assertEquals(1, $CFG->filterall); } + + public function test_filter_manager_instance() { + + 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); + } }