diff --git a/.upgradenotes/MDL-82427-2024070901230429.yml b/.upgradenotes/MDL-82427-2024070901230429.yml new file mode 100644 index 00000000000..07ba3446eaf --- /dev/null +++ b/.upgradenotes/MDL-82427-2024070901230429.yml @@ -0,0 +1,6 @@ +issueNumber: MDL-82427 +notes: + core_filters: + - message: >- + Added support for autoloading of filters from `\filter_filtername\filter`. The existing class names are still supported. + type: improved diff --git a/filter/classes/filter_manager.php b/filter/classes/filter_manager.php index 152f2c1349d..e0febc60507 100644 --- a/filter/classes/filter_manager.php +++ b/filter/classes/filter_manager.php @@ -127,6 +127,11 @@ class filter_manager { protected function make_filter_object($filtername, $context, $localconfig) { global $CFG; + $filterclass = "\\filter_{$filtername}\\text_filter"; + if (class_exists($filterclass)) { + return new $filterclass($context, $localconfig); + } + $path = $CFG->dirroot .'/filter/'. $filtername .'/filter.php'; if (!is_readable($path)) { return null; diff --git a/lib/filterlib.php b/lib/filterlib.php index 18686c4792f..d6a84274120 100644 --- a/lib/filterlib.php +++ b/lib/filterlib.php @@ -70,7 +70,7 @@ function filter_get_name($filter) { function filter_get_all_installed() { $filternames = array(); foreach (core_component::get_plugin_list('filter') as $filter => $fulldir) { - if (is_readable("$fulldir/filter.php")) { + if (class_exists("\\filter_{$filter}\\text_filter") || is_readable("$fulldir/filter.php")) { $filternames[$filter] = filter_get_name($filter); } }