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.

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

   1  <?php
   2  
   3  // This file is part of Moodle - http://moodle.org/
   4  //
   5  // Moodle is free software: you can redistribute it and/or modify
   6  // it under the terms of the GNU General Public License as published by
   7  // the Free Software Foundation, either version 3 of the License, or
   8  // (at your option) any later version.
   9  //
  10  // Moodle is distributed in the hope that it will be useful,
  11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13  // GNU General Public License for more details.
  14  //
  15  // You should have received a copy of the GNU General Public License
  16  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  17  
  18  /**
  19   * @package    mod_data
  20   * @subpackage backup-moodle2
  21   * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  defined('MOODLE_INTERNAL') || die();
  26  
  27  require_once($CFG->dirroot . '/mod/data/backup/moodle2/restore_data_stepslib.php'); // Because it exists (must)
  28  
  29  /**
  30   * data restore task that provides all the settings and steps to perform one
  31   * complete restore of the activity
  32   */
  33  class restore_data_activity_task extends restore_activity_task {
  34  
  35      /**
  36       * Define (add) particular settings this activity can have
  37       */
  38      protected function define_my_settings() {
  39          // No particular settings for this activity
  40      }
  41  
  42      /**
  43       * Define (add) particular steps this activity can have
  44       */
  45      protected function define_my_steps() {
  46          // Data only has one structure step
  47          $this->add_step(new restore_data_activity_structure_step('data_structure', 'data.xml'));
  48      }
  49  
  50      /**
  51       * Define the contents in the activity that must be
  52       * processed by the link decoder
  53       */
  54      static public function define_decode_contents() {
  55          $contents = array();
  56  
  57          $contents[] = new restore_decode_content('data', array(
  58                                'intro', 'singletemplate', 'listtemplate', 'listtemplateheader', 'listtemplatefooter',
  59                                'addtemplate', 'rsstemplate', 'rsstitletemplate', 'asearchtemplate'), 'data');
  60          $contents[] = new restore_decode_content('data_fields', array(
  61                                'description', 'param1', 'param2', 'param3',
  62                                'param4', 'param5', 'param6', 'param7',
  63                                'param8', 'param9', 'param10'), 'data_field');
  64          $contents[] = new restore_decode_content('data_content', array(
  65                                'content', 'content1', 'content2', 'content3', 'content4'));
  66  
  67          return $contents;
  68      }
  69  
  70      /**
  71       * Define the decoding rules for links belonging
  72       * to the activity to be executed by the link decoder
  73       */
  74      static public function define_decode_rules() {
  75          $rules = array();
  76  
  77          $rules[] = new restore_decode_rule('DATAVIEWBYID', '/mod/data/view.php?id=$1', 'course_module');
  78          $rules[] = new restore_decode_rule('DATAVIEWBYD', '/mod/data/view.php?d=$1', 'data');
  79          $rules[] = new restore_decode_rule('DATAINDEX', '/mod/data/index.php?id=$1', 'course');
  80          $rules[] = new restore_decode_rule('DATAVIEWRECORD', '/mod/data/view.php?d=$1&amp;rid=$2', array('data', 'data_record'));
  81  
  82          return $rules;
  83  
  84      }
  85  
  86      /**
  87       * Define the restore log rules that will be applied
  88       * by the {@link restore_logs_processor} when restoring
  89       * data logs. It must return one array
  90       * of {@link restore_log_rule} objects
  91       */
  92      static public function define_restore_log_rules() {
  93          $rules = array();
  94  
  95          $rules[] = new restore_log_rule('data', 'add', 'view.php?d={data}&rid={data_record}', '{data}');
  96          $rules[] = new restore_log_rule('data', 'update', 'view.php?d={data}&rid={data_record}', '{data}');
  97          $rules[] = new restore_log_rule('data', 'view', 'view.php?id={course_module}', '{data}');
  98          $rules[] = new restore_log_rule('data', 'record delete', 'view.php?id={course_module}', '{data}');
  99          $rules[] = new restore_log_rule('data', 'fields add', 'field.php?d={data}&mode=display&fid={data_field}', '{data_field}');
 100          $rules[] = new restore_log_rule('data', 'fields update', 'field.php?d={data}&mode=display&fid={data_field}', '{data_field}');
 101          $rules[] = new restore_log_rule('data', 'fields delete', 'field.php?d={data}', '[name]');
 102  
 103          return $rules;
 104      }
 105  
 106      /**
 107       * Define the restore log rules that will be applied
 108       * by the {@link restore_logs_processor} when restoring
 109       * course logs. It must return one array
 110       * of {@link restore_log_rule} objects
 111       *
 112       * Note this rules are applied when restoring course logs
 113       * by the restore final task, but are defined here at
 114       * activity level. All them are rules not linked to any module instance (cmid = 0)
 115       */
 116      static public function define_restore_log_rules_for_course() {
 117          $rules = array();
 118  
 119          $rules[] = new restore_log_rule('data', 'view all', 'index.php?id={course}', null);
 120  
 121          return $rules;
 122      }
 123  
 124      /**
 125       * Given a commment area, return the itemname that contains the itemid mappings.
 126       *
 127       * @param string $commentarea Comment area name e.g. database_entry.
 128       * @return string name of the mapping used to determine the itemid.
 129       */
 130      public function get_comment_mapping_itemname($commentarea) {
 131          if ($commentarea == 'database_entry') {
 132              $itemname = 'data_record';
 133          } else {
 134              $itemname = parent::get_comment_mapping_itemname($commentarea);
 135          }
 136          return $itemname;
 137      }
 138  }