From a7570bfcb60d63e9e606ae2fb1a063389aec58a2 Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Mon, 4 Oct 2021 16:52:22 +0200 Subject: [PATCH] MDL-72720 message: Implement enable_plugin() method --- admin/message.php | 6 ++---- lib/classes/plugininfo/message.php | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/admin/message.php b/admin/message.php index aa632b1d740..69b293c22e0 100644 --- a/admin/message.php +++ b/admin/message.php @@ -119,10 +119,8 @@ if (($form = data_submitted()) && confirm_sesskey()) { // Save processors enabled/disabled status. foreach ($allprocessors as $processor) { $enabled = isset($form->{$processor->name}); - if ($enabled != $processor->enabled) { - add_to_config_log($processor->name, $processor->enabled, $enabled, 'core'); - } - \core_message\api::update_processor_status($processor, $enabled); + $class = \core_plugin_manager::resolve_plugininfo_class('message'); + $class::enable_plugin($processor->name, $enabled); } foreach ($newpreferences as $name => $value) { diff --git a/lib/classes/plugininfo/message.php b/lib/classes/plugininfo/message.php index 9f87f57e3be..bcb4c336231 100644 --- a/lib/classes/plugininfo/message.php +++ b/lib/classes/plugininfo/message.php @@ -40,6 +40,30 @@ class message extends base { return $DB->get_records_menu('message_processors', array('enabled'=>1), 'name ASC', 'name, name AS val'); } + public static function enable_plugin(string $pluginname, int $enabled): bool { + global $DB; + + if (!$plugin = $DB->get_record('message_processors', ['name' => $pluginname])) { + throw new \moodle_exception('invalidplugin', 'message', '', $pluginname); + } + + $haschanged = false; + + // Only set visibility if it's different from the current value. + if ($plugin->enabled != $enabled) { + $haschanged = true; + $processor = \core_message\api::get_processed_processor_object($plugin); + + // Include this information into config changes table. + add_to_config_log($processor->name, $processor->enabled, $enabled, 'core'); + + // Save processor enabled/disabled status. + \core_message\api::update_processor_status($processor, $enabled); + } + + return $haschanged; + } + public function get_settings_section_name() { return 'messagesetting' . $this->name; }