Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.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  /**
  18   * @package   block_html
  19   * @subpackage backup-moodle2
  20   * @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
  21   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  22   */
  23  
  24  /**
  25   * Specialised restore task for the html block
  26   * (requires encode_content_links in some configdata attrs)
  27   *
  28   * TODO: Finish phpdocs
  29   */
  30  class restore_html_block_task extends restore_block_task {
  31  
  32      protected function define_my_settings() {
  33      }
  34  
  35      protected function define_my_steps() {
  36      }
  37  
  38      public function get_fileareas() {
  39          return array('content');
  40      }
  41  
  42      public function get_configdata_encoded_attributes() {
  43          return array('text'); // We need to encode some attrs in configdata
  44      }
  45  
  46      static public function define_decode_contents() {
  47  
  48          $contents = array();
  49  
  50          $contents[] = new restore_html_block_decode_content('block_instances', 'configdata', 'block_instance');
  51  
  52          return $contents;
  53      }
  54  
  55      static public function define_decode_rules() {
  56          return array();
  57      }
  58  }
  59  
  60  /**
  61   * Specialised restore_decode_content provider that unserializes the configdata
  62   * field, to serve the configdata->text content to the restore_decode_processor
  63   * packaging it back to its serialized form after process
  64   */
  65  class restore_html_block_decode_content extends restore_decode_content {
  66  
  67      protected $configdata; // Temp storage for unserialized configdata
  68  
  69      protected function get_iterator() {
  70          global $DB;
  71  
  72          // Build the SQL dynamically here
  73          $fieldslist = 't.' . implode(', t.', $this->fields);
  74          $sql = "SELECT t.id, $fieldslist
  75                    FROM {" . $this->tablename . "} t
  76                    JOIN {backup_ids_temp} b ON b.newitemid = t.id
  77                   WHERE b.backupid = ?
  78                     AND b.itemname = ?
  79                     AND t.blockname = 'html'";
  80          $params = array($this->restoreid, $this->mapping);
  81          return ($DB->get_recordset_sql($sql, $params));
  82      }
  83  
  84      protected function preprocess_field($field) {
  85          $this->configdata = unserialize_object(base64_decode($field));
  86          return isset($this->configdata->text) ? $this->configdata->text : '';
  87      }
  88  
  89      protected function postprocess_field($field) {
  90          $this->configdata->text = $field;
  91          return base64_encode(serialize($this->configdata));
  92      }
  93  }