Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 3.9.x will end* 10 May 2021 (12 months).
  • Bug fixes for security issues in 3.9.x will end* 8 May 2023 (36 months).
  • PHP version: minimum PHP 7.2.0 Note: minimum PHP version has increased since Moodle 3.8. PHP 7.3.x and 7.4.x are 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   * Description of book restore task
  19   *
  20   * @package    mod_book
  21   * @copyright  2010 Petr Skoda {@link http://skodak.org}
  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/book/backup/moodle2/restore_book_stepslib.php'); // Because it exists (must)
  28  
  29  class restore_book_activity_task extends restore_activity_task {
  30  
  31      /**
  32       * Define (add) particular settings this activity can have
  33       *
  34       * @return void
  35       */
  36      protected function define_my_settings() {
  37          // No particular settings for this activity
  38      }
  39  
  40      /**
  41       * Define (add) particular steps this activity can have
  42       *
  43       * @return void
  44       */
  45      protected function define_my_steps() {
  46          // Choice only has one structure step
  47          $this->add_step(new restore_book_activity_structure_step('book_structure', 'book.xml'));
  48      }
  49  
  50      /**
  51       * Define the contents in the activity that must be
  52       * processed by the link decoder
  53       *
  54       * @return array
  55       */
  56      static public function define_decode_contents() {
  57          $contents = array();
  58  
  59          $contents[] = new restore_decode_content('book', array('intro'), 'book');
  60          $contents[] = new restore_decode_content('book_chapters', array('content'), 'book_chapter');
  61  
  62          return $contents;
  63      }
  64  
  65      /**
  66       * Define the decoding rules for links belonging
  67       * to the activity to be executed by the link decoder
  68       *
  69       * @return array
  70       */
  71      static public function define_decode_rules() {
  72          $rules = array();
  73  
  74          // List of books in course
  75          $rules[] = new restore_decode_rule('BOOKINDEX', '/mod/book/index.php?id=$1', 'course');
  76  
  77          // book by cm->id
  78          $rules[] = new restore_decode_rule('BOOKVIEWBYID', '/mod/book/view.php?id=$1', 'course_module');
  79          $rules[] = new restore_decode_rule('BOOKVIEWBYIDCH', '/mod/book/view.php?id=$1&amp;chapterid=$2', array('course_module', 'book_chapter'));
  80  
  81          // book by book->id
  82          $rules[] = new restore_decode_rule('BOOKVIEWBYB', '/mod/book/view.php?b=$1', 'book');
  83          $rules[] = new restore_decode_rule('BOOKVIEWBYBCH', '/mod/book/view.php?b=$1&amp;chapterid=$2', array('book', 'book_chapter'));
  84  
  85          // Convert old book links MDL-33362 & MDL-35007
  86          $rules[] = new restore_decode_rule('BOOKSTART', '/mod/book/view.php?id=$1', 'course_module');
  87          $rules[] = new restore_decode_rule('BOOKCHAPTER', '/mod/book/view.php?id=$1&amp;chapterid=$2', array('course_module', 'book_chapter'));
  88  
  89          return $rules;
  90      }
  91  
  92      /**
  93       * Define the restore log rules that will be applied
  94       * by the {@link restore_logs_processor} when restoring
  95       * book logs. It must return one array
  96       * of {@link restore_log_rule} objects
  97       *
  98       * @return array
  99       */
 100      static public function define_restore_log_rules() {
 101          $rules = array();
 102  
 103          $rules[] = new restore_log_rule('book', 'add', 'view.php?id={course_module}', '{book}');
 104          $rules[] = new restore_log_rule('book', 'update', 'view.php?id={course_module}&chapterid={book_chapter}', '{book}');
 105          $rules[] = new restore_log_rule('book', 'update', 'view.php?id={course_module}', '{book}');
 106          $rules[] = new restore_log_rule('book', 'view', 'view.php?id={course_module}&chapterid={book_chapter}', '{book}');
 107          $rules[] = new restore_log_rule('book', 'view', 'view.php?id={course_module}', '{book}');
 108          $rules[] = new restore_log_rule('book', 'print', 'tool/print/index.php?id={course_module}&chapterid={book_chapter}', '{book}');
 109          $rules[] = new restore_log_rule('book', 'print', 'tool/print/index.php?id={course_module}', '{book}');
 110          $rules[] = new restore_log_rule('book', 'exportimscp', 'tool/exportimscp/index.php?id={course_module}', '{book}');
 111          // To convert old 'generateimscp' log entries
 112          $rules[] = new restore_log_rule('book', 'generateimscp', 'tool/generateimscp/index.php?id={course_module}', '{book}',
 113                  'book', 'exportimscp', 'tool/exportimscp/index.php?id={course_module}', '{book}');
 114          $rules[] = new restore_log_rule('book', 'print chapter', 'tool/print/index.php?id={course_module}&chapterid={book_chapter}', '{book_chapter}');
 115          $rules[] = new restore_log_rule('book', 'update chapter', 'view.php?id={course_module}&chapterid={book_chapter}', '{book_chapter}');
 116          $rules[] = new restore_log_rule('book', 'add chapter', 'view.php?id={course_module}&chapterid={book_chapter}', '{book_chapter}');
 117          $rules[] = new restore_log_rule('book', 'view chapter', 'view.php?id={course_module}&chapterid={book_chapter}', '{book_chapter}');
 118  
 119          return $rules;
 120      }
 121  
 122      /**
 123       * Define the restore log rules that will be applied
 124       * by the {@link restore_logs_processor} when restoring
 125       * course logs. It must return one array
 126       * of {@link restore_log_rule} objects
 127       *
 128       * Note this rules are applied when restoring course logs
 129       * by the restore final task, but are defined here at
 130       * activity level. All them are rules not linked to any module instance (cmid = 0)
 131       *
 132       * @return array
 133       */
 134      static public function define_restore_log_rules_for_course() {
 135          $rules = array();
 136  
 137          $rules[] = new restore_log_rule('book', 'view all', 'index.php?id={course}', null);
 138  
 139          return $rules;
 140      }
 141  }