. /** * A page to manage editor plugins. * * @package core_admin * @copyright 2023 Andrew Lyons * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once('../config.php'); require_once($CFG->libdir . '/adminlib.php'); require_once($CFG->libdir . '/tablelib.php'); $action = required_param('action', PARAM_ALPHANUMEXT); $plugin = required_param('plugin', PARAM_PLUGIN); $PAGE->set_url('/admin/editors.php', ['action' => $action, 'editor' => $plugin]); $PAGE->set_context(context_system::instance()); require_admin(); require_sesskey(); $returnurl = new moodle_url('/admin/settings.php', ['section' => 'manageeditors']); // Get currently installed and enabled auth plugins. $availableeditors = editors_get_available(); if (!empty($plugin) && empty($availableeditors[$plugin])) { redirect($returnurl); } $activeeditors = explode(',', $CFG->texteditors); foreach ($activeeditors as $key => $active) { if (empty($availableeditors[$active])) { unset($activeeditors[$key]); } } switch ($action) { case 'disable': // Remove from enabled list. $class = \core_plugin_manager::resolve_plugininfo_class('editor'); $class::enable_plugin($plugin, false); break; case 'enable': // Add to enabled list. if (!in_array($plugin, $activeeditors)) { $class = \core_plugin_manager::resolve_plugininfo_class('editor'); $class::enable_plugin($plugin, true); } break; case 'down': $key = array_search($plugin, $activeeditors); if ($key !== false) { // Move down the list. if ($key < (count($activeeditors) - 1)) { $fsave = $activeeditors[$key]; $activeeditors[$key] = $activeeditors[$key + 1]; $activeeditors[$key + 1] = $fsave; add_to_config_log('editor_position', $key, $key + 1, $plugin); set_config('texteditors', implode(',', $activeeditors)); core_plugin_manager::reset_caches(); } } break; case 'up': $key = array_search($plugin, $activeeditors); if ($key !== false) { // Move up the list. if ($key >= 1) { $fsave = $activeeditors[$key]; $activeeditors[$key] = $activeeditors[$key - 1]; $activeeditors[$key - 1] = $fsave; add_to_config_log('editor_position', $key, $key - 1, $plugin); set_config('texteditors', implode(',', $activeeditors)); core_plugin_manager::reset_caches(); } } break; default: break; } redirect($returnurl);