diff --git a/mod/assign/adminlib.php b/mod/assign/adminlib.php index 9461138e21e..c78030fa01e 100644 --- a/mod/assign/adminlib.php +++ b/mod/assign/adminlib.php @@ -274,8 +274,8 @@ class assign_plugin_manager { * @return string The next page to display */ public function hide_plugin($plugin) { - set_config('disabled', 1, $this->subtype . '_' . $plugin); - core_plugin_manager::reset_caches(); + $class = \core_plugin_manager::resolve_plugininfo_class($this->subtype); + $class::enable_plugin($plugin, false); return 'view'; } @@ -333,8 +333,8 @@ class assign_plugin_manager { * @return string The next page to display */ public function show_plugin($plugin) { - set_config('disabled', 0, $this->subtype . '_' . $plugin); - core_plugin_manager::reset_caches(); + $class = \core_plugin_manager::resolve_plugininfo_class($this->subtype); + $class::enable_plugin($plugin, true); return 'view'; } diff --git a/mod/assign/classes/plugininfo/assignfeedback.php b/mod/assign/classes/plugininfo/assignfeedback.php index 61923cd7e14..61cf6df0615 100644 --- a/mod/assign/classes/plugininfo/assignfeedback.php +++ b/mod/assign/classes/plugininfo/assignfeedback.php @@ -63,6 +63,24 @@ class assignfeedback extends base { return $enabled; } + public static function enable_plugin(string $pluginname, int $enabled): bool { + $haschanged = false; + + $plugin = 'assignfeedback_' . $pluginname; + $oldvalue = get_config($plugin, 'disabled'); + $disabled = !$enabled; + // Only set value if there is no config setting or if the value is different from the previous one. + if ($oldvalue === false || ((bool) $oldvalue != $disabled)) { + set_config('disabled', $disabled, $plugin); + $haschanged = true; + + add_to_config_log('disabled', $oldvalue, $disabled, $plugin); + \core_plugin_manager::reset_caches(); + } + + return $haschanged; + } + public function is_uninstall_allowed() { return true; } diff --git a/mod/assign/classes/plugininfo/assignsubmission.php b/mod/assign/classes/plugininfo/assignsubmission.php index a6370a42ce0..4a0fec33b0e 100644 --- a/mod/assign/classes/plugininfo/assignsubmission.php +++ b/mod/assign/classes/plugininfo/assignsubmission.php @@ -63,6 +63,24 @@ class assignsubmission extends base { return $enabled; } + public static function enable_plugin(string $pluginname, int $enabled): bool { + $haschanged = false; + + $plugin = 'assignsubmission_' . $pluginname; + $oldvalue = get_config($plugin, 'disabled'); + $disabled = !$enabled; + // Only set value if there is no config setting or if the value is different from the previous one. + if ($oldvalue === false || ((bool) $oldvalue != $disabled)) { + set_config('disabled', $disabled, $plugin); + $haschanged = true; + + add_to_config_log('disabled', $oldvalue, $disabled, $plugin); + \core_plugin_manager::reset_caches(); + } + + return $haschanged; + } + public function is_uninstall_allowed() { return true; }