MDL-72720 qtype: Implement enable_plugin() method

This commit is contained in:
Sara Arjona
2021-10-15 13:00:04 +02:00
parent a22093dbcf
commit bdab64dc61
2 changed files with 27 additions and 3 deletions
+4 -3
View File
@@ -80,7 +80,8 @@ if (($disable = optional_param('disable', '', PARAM_PLUGIN)) && confirm_sesskey(
print_error('unknownquestiontype', 'question', $thispageurl, $disable);
}
set_config($disable . '_disabled', 1, 'question');
$class = \core_plugin_manager::resolve_plugininfo_class('qtype');
$class::enable_plugin($disable, false);
redirect($thispageurl);
}
@@ -94,7 +95,8 @@ if (($enable = optional_param('enable', '', PARAM_PLUGIN)) && confirm_sesskey())
print_error('cannotenable', 'question', $thispageurl, $enable);
}
unset_config($enable . '_disabled', 'question');
$class = \core_plugin_manager::resolve_plugininfo_class('qtype');
$class::enable_plugin($enable, true);
redirect($thispageurl);
}
@@ -251,4 +253,3 @@ function question_type_icon_html($action, $qtypename, $icon, $alt, $tip) {
new pix_icon($icon, $alt, 'moodle', array('title' => '', 'class' => 'iconsmall')),
null, array('title' => $tip));
}
+23
View File
@@ -65,6 +65,29 @@ class qtype extends base {
return $enabled;
}
public static function enable_plugin(string $pluginname, int $enabled): bool {
$haschanged = false;
$settingname = $pluginname . '_disabled';
$oldvalue = get_config('question', $settingname);
$disabled = !$enabled;
// Only set value if there is no config setting or if the value is different from the previous one.
if ($oldvalue == false && $disabled) {
set_config($settingname, $disabled, 'question');
$haschanged = true;
} else if ($oldvalue != false && !$disabled) {
unset_config($settingname, 'question');
$haschanged = true;
}
if ($haschanged) {
add_to_config_log($settingname, $oldvalue, $disabled, 'question');
\core_plugin_manager::reset_caches();
}
return $haschanged;
}
public function is_uninstall_allowed() {
global $DB;