Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
/admin/ -> editors.php (source)

Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * A page to manage editor plugins.
  19   *
  20   * @package   core_admin
  21   * @copyright 2023 Andrew Lyons <andrew@nicols.co.uk>
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  require_once('../config.php');
  26  require_once($CFG->libdir . '/adminlib.php');
  27  require_once($CFG->libdir . '/tablelib.php');
  28  
  29  $action = required_param('action', PARAM_ALPHANUMEXT);
  30  $plugin = required_param('plugin', PARAM_PLUGIN);
  31  
  32  $PAGE->set_url('/admin/editors.php', ['action' => $action, 'editor' => $plugin]);
  33  $PAGE->set_context(context_system::instance());
  34  
  35  require_admin();
  36  require_sesskey();
  37  
  38  $returnurl = new moodle_url('/admin/settings.php', ['section' => 'manageeditors']);
  39  
  40  // Get currently installed and enabled auth plugins.
  41  $availableeditors = editors_get_available();
  42  if (!empty($plugin) && empty($availableeditors[$plugin])) {
  43      redirect($returnurl);
  44  }
  45  
  46  $activeeditors = explode(',', $CFG->texteditors);
  47  foreach ($activeeditors as $key => $active) {
  48      if (empty($availableeditors[$active])) {
  49          unset($activeeditors[$key]);
  50      }
  51  }
  52  
  53  switch ($action) {
  54      case 'disable':
  55          // Remove from enabled list.
  56          $class = \core_plugin_manager::resolve_plugininfo_class('editor');
  57          $class::enable_plugin($plugin, false);
  58          break;
  59  
  60      case 'enable':
  61          // Add to enabled list.
  62          if (!in_array($plugin, $activeeditors)) {
  63              $class = \core_plugin_manager::resolve_plugininfo_class('editor');
  64              $class::enable_plugin($plugin, true);
  65          }
  66          break;
  67  
  68      case 'down':
  69          $key = array_search($plugin, $activeeditors);
  70          if ($key !== false) {
  71              // Move down the list.
  72              if ($key < (count($activeeditors) - 1)) {
  73                  $fsave = $activeeditors[$key];
  74                  $activeeditors[$key] = $activeeditors[$key + 1];
  75                  $activeeditors[$key + 1] = $fsave;
  76                  add_to_config_log('editor_position', $key, $key + 1, $plugin);
  77                  set_config('texteditors', implode(',', $activeeditors));
  78                  core_plugin_manager::reset_caches();
  79              }
  80          }
  81          break;
  82  
  83      case 'up':
  84          $key = array_search($plugin, $activeeditors);
  85          if ($key !== false) {
  86              // Move up the list.
  87              if ($key >= 1) {
  88                  $fsave = $activeeditors[$key];
  89                  $activeeditors[$key] = $activeeditors[$key - 1];
  90                  $activeeditors[$key - 1] = $fsave;
  91                  add_to_config_log('editor_position', $key, $key - 1, $plugin);
  92                  set_config('texteditors', implode(',', $activeeditors));
  93                  core_plugin_manager::reset_caches();
  94              }
  95          }
  96          break;
  97  
  98      default:
  99          break;
 100  }
 101  
 102  redirect($returnurl);