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 * Define all the backup steps that will be used by the backup_book_activity_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 /** 28 * Structure step to backup one book activity 29 */ 30 class backup_book_activity_structure_step extends backup_activity_structure_step { 31 32 protected function define_structure() { 33 34 // Define each element separated. 35 $book = new backup_nested_element('book', array('id'), array( 36 'name', 'intro', 'introformat', 'numbering', 'navstyle', 37 'customtitles', 'timecreated', 'timemodified')); 38 $chapters = new backup_nested_element('chapters'); 39 $chapter = new backup_nested_element('chapter', array('id'), array( 40 'pagenum', 'subchapter', 'title', 'content', 'contentformat', 41 'hidden', 'timemcreated', 'timemodified', 'importsrc')); 42 43 $tags = new backup_nested_element('chaptertags'); 44 $tag = new backup_nested_element('tag', array('id'), array('itemid', 'rawname')); 45 46 $book->add_child($chapters); 47 $chapters->add_child($chapter); 48 49 // Define sources 50 $book->set_source_table('book', array('id' => backup::VAR_ACTIVITYID)); 51 $chapter->set_source_table('book_chapters', array('bookid' => backup::VAR_PARENTID)); 52 53 // Define file annotations 54 $book->annotate_files('mod_book', 'intro', null); // This file area hasn't itemid 55 $chapter->annotate_files('mod_book', 'chapter', 'id'); 56 57 $book->add_child($tags); 58 $tags->add_child($tag); 59 60 // All these source definitions only happen if we are including user info. 61 if (core_tag_tag::is_enabled('mod_book', 'book_chapters')) { 62 $tag->set_source_sql('SELECT t.id, ti.itemid, t.rawname 63 FROM {tag} t 64 JOIN {tag_instance} ti ON ti.tagid = t.id 65 WHERE ti.itemtype = ? 66 AND ti.component = ? 67 AND ti.contextid = ?', array( 68 backup_helper::is_sqlparam('book_chapters'), 69 backup_helper::is_sqlparam('mod_book'), 70 backup::VAR_CONTEXTID)); 71 } 72 73 // Return the root element (book), wrapped into standard activity structure 74 return $this->prepare_activity_structure($book); 75 } 76 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body