From fdca502808fb44cfa57dcb0d7a7ed0913e4016e7 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Thu, 7 Jul 2022 18:27:35 +0100 Subject: [PATCH] MDL-75185 reportbuilder: order report source listing alphabetically. --- reportbuilder/classes/manager.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/reportbuilder/classes/manager.php b/reportbuilder/classes/manager.php index 680cb7b9abf..8fdc18f680d 100644 --- a/reportbuilder/classes/manager.php +++ b/reportbuilder/classes/manager.php @@ -18,6 +18,7 @@ declare(strict_types=1); namespace core_reportbuilder; +use core_collator; use core_component; use core_plugin_manager; use stdClass; @@ -131,8 +132,9 @@ class manager { $datasources = core_component::get_component_classes_in_namespace(null, 'reportbuilder\\datasource'); foreach ($datasources as $class => $path) { if (self::report_source_exists($class, datasource::class) && self::report_source_available($class)) { - [$component] = explode('\\', $class); + // Group each report source by the component that it belongs to. + [$component] = explode('\\', $class); if ($plugininfo = core_plugin_manager::instance()->get_plugin_info($component)) { $componentname = $plugininfo->displayname; } else { @@ -143,6 +145,11 @@ class manager { } } + // Order source for each component alphabetically. + array_walk($sources, static function(array &$componentsources): void { + core_collator::asort($componentsources); + }); + return $sources; } }