Merge branch 'MDL-83163-m403' of https://github.com/sammarshallou/moodle into MOODLE_403_STABLE
This commit is contained in:
+5
-1
@@ -3352,7 +3352,11 @@ function include_course_editor(course_format $format) {
|
||||
function get_sorted_course_formats($enabledonly = false) {
|
||||
global $CFG;
|
||||
|
||||
$formats = core_plugin_manager::instance()->get_installed_plugins('format');
|
||||
// Include both formats that exist on disk (but might not have been installed yet), and those
|
||||
// which were installed but no longer exist on disk.
|
||||
$installedformats = core_plugin_manager::instance()->get_installed_plugins('format');
|
||||
$existingformats = core_component::get_plugin_list('format');
|
||||
$formats = array_merge($installedformats, $existingformats);
|
||||
|
||||
if (!empty($CFG->format_plugins_sortorder)) {
|
||||
$order = explode(',', $CFG->format_plugins_sortorder);
|
||||
|
||||
@@ -7488,4 +7488,36 @@ class courselib_test extends advanced_testcase {
|
||||
$course = get_course($course->id);
|
||||
$this->assertEquals($course->fullname, $data->fullname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests get_sorted_course_formats returns all plugins in cases where plugins are installed now,
|
||||
* installed previously but no longer exist, or not installed yet.
|
||||
*
|
||||
* @covers ::get_sorted_course_formats()
|
||||
*/
|
||||
public function test_get_sorted_course_formats_installed_or_not(): void {
|
||||
global $DB;
|
||||
|
||||
$this->resetAfterTest();
|
||||
|
||||
// By default returns all course formats.
|
||||
$formats = get_sorted_course_formats();
|
||||
$this->assertEquals(['singleactivity', 'social', 'topics', 'weeks'], $formats);
|
||||
|
||||
// If there is an extra format installed that no longer exists, include in list (at start).
|
||||
$DB->insert_record('config_plugins', [
|
||||
'plugin' => 'format_frogs',
|
||||
'name' => 'version',
|
||||
'value' => '20240916',
|
||||
]);
|
||||
\core_plugin_manager::reset_caches();
|
||||
$formats = get_sorted_course_formats();
|
||||
$this->assertEquals(['frogs', 'singleactivity', 'social', 'topics', 'weeks'], $formats);
|
||||
|
||||
// If one of the formats is not installed yet, we still return it.
|
||||
$DB->delete_records('config_plugins', ['plugin' => 'format_weeks']);
|
||||
\core_plugin_manager::reset_caches();
|
||||
$formats = get_sorted_course_formats();
|
||||
$this->assertEquals(['frogs', 'singleactivity', 'social', 'topics', 'weeks'], $formats);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user