MDL-36881 Handle poorly behaved modname_get_types functions better
The modname_get_types function is not always well implemented by third-party plugins and some return poor data. This in turn leads to incorrect module definitions, and can lead to problems in both the 'Add an activity...' dropdowns and the Activity chooser. This will also prevent display of plugins which legitimately can have subtypes but where no subtypes were found. Since such plugins cannot be used in this fashion in any case, this is also beneficial. Signed-off-by: Andrew Robert Nicols <[email protected]>
This commit is contained in:
committed by
Andrew Robert Nicols
parent
df93b156a7
commit
48a5b81346
+7
-2
@@ -1914,7 +1914,8 @@ function get_module_metadata($course, $modnames, $sectionreturn = null) {
|
||||
// NOTE: this is legacy stuff, module subtypes are very strongly discouraged!!
|
||||
$gettypesfunc = $modname.'_get_types';
|
||||
if (function_exists($gettypesfunc)) {
|
||||
if ($types = $gettypesfunc()) {
|
||||
$types = $gettypesfunc();
|
||||
if (is_array($types) && count($types) > 0) {
|
||||
$group = new stdClass();
|
||||
$group->name = $modname;
|
||||
$group->icon = $OUTPUT->pix_icon('icon', '', $modname, array('class' => 'icon'));
|
||||
@@ -1963,7 +1964,11 @@ function get_module_metadata($course, $modnames, $sectionreturn = null) {
|
||||
$module->archetype = plugin_supports('mod', $modname, FEATURE_MOD_ARCHETYPE, MOD_ARCHETYPE_OTHER);
|
||||
$modlist[$course->id][$modname] = $module;
|
||||
}
|
||||
$return[$modname] = $modlist[$course->id][$modname];
|
||||
if (isset($modlist[$course->id][$modname])) {
|
||||
$return[$modname] = $modlist[$course->id][$modname];
|
||||
} else {
|
||||
debugging("Invalid module metadata configuration for {$modname}");
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
|
||||
Reference in New Issue
Block a user