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.
   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  namespace tool_admin_presets\local\action;
  18  
  19  use tool_admin_presets\form\import_form;
  20  
  21  /**
  22   * This class extends base class and handles import function.
  23   *
  24   * @package          tool_admin_presets
  25   * @copyright        2021 Pimenko <support@pimenko.com><pimenko.com>
  26   * @author           Jordan Kesraoui | Sylvain Revenu | Pimenko based on David MonllaĆ³ <david.monllao@urv.cat> code
  27   * @license          http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  28   */
  29  class import extends base {
  30  
  31      /**
  32       * Displays the import moodleform
  33       */
  34      public function show(): void {
  35          $url = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'import', 'mode' => 'execute']);
  36          $this->moodleform = new import_form($url);
  37      }
  38  
  39      /**
  40       * Imports the xmlfile into DB
  41       */
  42      public function execute(): void {
  43          confirm_sesskey();
  44  
  45          $url = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'import', 'mode' => 'execute']);
  46          $this->moodleform = new import_form($url);
  47  
  48          if ($this->moodleform->is_cancelled()) {
  49              $url = new \moodle_url('/admin/tool/admin_presets/index.php');
  50              redirect($url);
  51          }
  52  
  53          if ($data = $this->moodleform->get_data()) {
  54              // Getting the file.
  55              $xmlcontent = $this->moodleform->get_file_content('xmlfile');
  56              list($xml, $preset, $settingsfound, $pluginsfound) = $this->manager->import_preset($xmlcontent, $data->name);
  57              if (!$xml) {
  58                  $url = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'import']);
  59                  redirect($url, get_string('wrongfile', 'tool_admin_presets'));
  60              }
  61  
  62              // Store it here for logging and other future id-oriented stuff.
  63              if (!is_null($preset)) {
  64                  $this->id = $preset->id;
  65              }
  66  
  67              // If there are no valid or selected settings, raise an error.
  68              if (!$settingsfound && !$pluginsfound) {
  69                  $url = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'import']);
  70                  redirect($url, get_string('novalidsettings', 'tool_admin_presets'));
  71              }
  72  
  73              // Trigger it after execute finishes.
  74              $this->log();
  75  
  76              $url = new \moodle_url('/admin/tool/admin_presets/index.php', ['action' => 'load', 'id' => $preset->id]);
  77              redirect($url);
  78          }
  79      }
  80  
  81      protected function get_explanatory_description(): ?string {
  82          $text = null;
  83          if ($this->mode == 'show') {
  84              $text = get_string('importdescription', 'tool_admin_presets');
  85          }
  86  
  87          return $text;
  88      }
  89  
  90  }