|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00003 // This file is part of Moodle - http://moodle.org/ 00004 // 00005 // Moodle is free software: you can redistribute it and/or modify 00006 // it under the terms of the GNU General Public License as published by 00007 // the Free Software Foundation, either version 3 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // Moodle is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU General Public License 00016 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 00017 00032 class backup_choice_activity_structure_step extends backup_activity_structure_step { 00033 00034 protected function define_structure() { 00035 00036 // To know if we are including userinfo 00037 $userinfo = $this->get_setting_value('userinfo'); 00038 00039 // Define each element separated 00040 $choice = new backup_nested_element('choice', array('id'), array( 00041 'name', 'intro', 'introformat', 'publish', 00042 'showresults', 'display', 'allowupdate', 'showunanswered', 00043 'limitanswers', 'timeopen', 'timeclose', 'timemodified', 00044 'completionsubmit')); 00045 00046 $options = new backup_nested_element('options'); 00047 00048 $option = new backup_nested_element('option', array('id'), array( 00049 'text', 'maxanswers', 'timemodified')); 00050 00051 $answers = new backup_nested_element('answers'); 00052 00053 $answer = new backup_nested_element('answer', array('id'), array( 00054 'userid', 'optionid', 'timemodified')); 00055 00056 // Build the tree 00057 $choice->add_child($options); 00058 $options->add_child($option); 00059 00060 $choice->add_child($answers); 00061 $answers->add_child($answer); 00062 00063 // Define sources 00064 $choice->set_source_table('choice', array('id' => backup::VAR_ACTIVITYID)); 00065 00066 $option->set_source_sql(' 00067 SELECT * 00068 FROM {choice_options} 00069 WHERE choiceid = ?', 00070 array(backup::VAR_PARENTID)); 00071 00072 // All the rest of elements only happen if we are including user info 00073 if ($userinfo) { 00074 $answer->set_source_table('choice_answers', array('choiceid' => '../../id')); 00075 } 00076 00077 // Define id annotations 00078 $answer->annotate_ids('user', 'userid'); 00079 00080 // Define file annotations 00081 $choice->annotate_files('mod_choice', 'intro', null); // This file area hasn't itemid 00082 00083 // Return the root element (choice), wrapped into standard activity structure 00084 return $this->prepare_activity_structure($choice); 00085 } 00086 }