|
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 restore_workshop_activity_structure_step extends restore_activity_structure_step { 00033 00034 protected function define_structure() { 00035 00036 $paths = array(); 00037 00038 $userinfo = $this->get_setting_value('userinfo'); // are we including userinfo? 00039 00041 // XML interesting paths - non-user data 00043 00044 // root element describing workshop instance 00045 $workshop = new restore_path_element('workshop', '/activity/workshop'); 00046 $paths[] = $workshop; 00047 00048 // Apply for 'workshopform' subplugins optional paths at workshop level 00049 $this->add_subplugin_structure('workshopform', $workshop); 00050 00051 // Apply for 'workshopeval' subplugins optional paths at workshop level 00052 $this->add_subplugin_structure('workshopeval', $workshop); 00053 00054 // example submissions 00055 $paths[] = new restore_path_element('workshop_examplesubmission', 00056 '/activity/workshop/examplesubmissions/examplesubmission'); 00057 00058 // reference assessment of the example submission 00059 $referenceassessment = new restore_path_element('workshop_referenceassessment', 00060 '/activity/workshop/examplesubmissions/examplesubmission/referenceassessment'); 00061 $paths[] = $referenceassessment; 00062 00063 // Apply for 'workshopform' subplugins optional paths at referenceassessment level 00064 $this->add_subplugin_structure('workshopform', $referenceassessment); 00065 00066 // End here if no-user data has been selected 00067 if (!$userinfo) { 00068 return $this->prepare_activity_structure($paths); 00069 } 00070 00072 // XML interesting paths - user data 00074 00075 // assessments of example submissions 00076 $exampleassessment = new restore_path_element('workshop_exampleassessment', 00077 '/activity/workshop/examplesubmissions/examplesubmission/exampleassessments/exampleassessment'); 00078 $paths[] = $exampleassessment; 00079 00080 // Apply for 'workshopform' subplugins optional paths at exampleassessment level 00081 $this->add_subplugin_structure('workshopform', $exampleassessment); 00082 00083 // submissions 00084 $paths[] = new restore_path_element('workshop_submission', '/activity/workshop/submissions/submission'); 00085 00086 // allocated assessments 00087 $assessment = new restore_path_element('workshop_assessment', 00088 '/activity/workshop/submissions/submission/assessments/assessment'); 00089 $paths[] = $assessment; 00090 00091 // Apply for 'workshopform' subplugins optional paths at assessment level 00092 $this->add_subplugin_structure('workshopform', $assessment); 00093 00094 // aggregations of grading grades in this workshop 00095 $paths[] = new restore_path_element('workshop_aggregation', '/activity/workshop/aggregations/aggregation'); 00096 00097 // Return the paths wrapped into standard activity structure 00098 return $this->prepare_activity_structure($paths); 00099 } 00100 00101 protected function process_workshop($data) { 00102 global $DB; 00103 00104 $data = (object)$data; 00105 $oldid = $data->id; 00106 $data->course = $this->get_courseid(); 00107 00108 $data->timemodified = $this->apply_date_offset($data->timemodified); 00109 $data->submissionstart = $this->apply_date_offset($data->submissionstart); 00110 $data->submissionend = $this->apply_date_offset($data->submissionend); 00111 $data->assessmentstart = $this->apply_date_offset($data->assessmentstart); 00112 $data->assessmentend = $this->apply_date_offset($data->assessmentend); 00113 00114 // insert the workshop record 00115 $newitemid = $DB->insert_record('workshop', $data); 00116 // immediately after inserting "activity" record, call this 00117 $this->apply_activity_instance($newitemid); 00118 } 00119 00120 protected function process_workshop_examplesubmission($data) { 00121 global $DB; 00122 00123 $data = (object)$data; 00124 $oldid = $data->id; 00125 00126 $data->workshopid = $this->get_new_parentid('workshop'); 00127 $data->example = 1; 00128 $data->authorid = $this->task->get_userid(); 00129 $data->timecreated = $this->apply_date_offset($data->timecreated); 00130 $data->timemodified = $this->apply_date_offset($data->timemodified); 00131 00132 $newitemid = $DB->insert_record('workshop_submissions', $data); 00133 $this->set_mapping('workshop_examplesubmission', $oldid, $newitemid, true); // Mapping with files 00134 } 00135 00136 protected function process_workshop_referenceassessment($data) { 00137 global $DB; 00138 00139 $data = (object)$data; 00140 $oldid = $data->id; 00141 00142 $data->submissionid = $this->get_new_parentid('workshop_examplesubmission'); 00143 $data->reviewerid = $this->task->get_userid(); 00144 $data->timecreated = $this->apply_date_offset($data->timecreated); 00145 $data->timemodified = $this->apply_date_offset($data->timemodified); 00146 00147 $newitemid = $DB->insert_record('workshop_assessments', $data); 00148 $this->set_mapping('workshop_referenceassessment', $oldid, $newitemid); 00149 } 00150 00151 protected function process_workshop_exampleassessment($data) { 00152 global $DB; 00153 00154 $data = (object)$data; 00155 $oldid = $data->id; 00156 00157 $data->submissionid = $this->get_new_parentid('workshop_examplesubmission'); 00158 $data->reviewerid = $this->get_mappingid('user', $data->reviewerid); 00159 $data->timecreated = $this->apply_date_offset($data->timecreated); 00160 $data->timemodified = $this->apply_date_offset($data->timemodified); 00161 00162 $newitemid = $DB->insert_record('workshop_assessments', $data); 00163 $this->set_mapping('workshop_exampleassessment', $oldid, $newitemid); 00164 } 00165 00166 protected function process_workshop_submission($data) { 00167 global $DB; 00168 00169 $data = (object)$data; 00170 $oldid = $data->id; 00171 00172 $data->workshopid = $this->get_new_parentid('workshop'); 00173 $data->example = 0; 00174 $data->authorid = $this->get_mappingid('user', $data->authorid); 00175 $data->timecreated = $this->apply_date_offset($data->timecreated); 00176 $data->timemodified = $this->apply_date_offset($data->timemodified); 00177 00178 $newitemid = $DB->insert_record('workshop_submissions', $data); 00179 $this->set_mapping('workshop_submission', $oldid, $newitemid, true); // Mapping with files 00180 } 00181 00182 protected function process_workshop_assessment($data) { 00183 global $DB; 00184 00185 $data = (object)$data; 00186 $oldid = $data->id; 00187 00188 $data->submissionid = $this->get_new_parentid('workshop_submission'); 00189 $data->reviewerid = $this->get_mappingid('user', $data->reviewerid); 00190 $data->timecreated = $this->apply_date_offset($data->timecreated); 00191 $data->timemodified = $this->apply_date_offset($data->timemodified); 00192 00193 $newitemid = $DB->insert_record('workshop_assessments', $data); 00194 $this->set_mapping('workshop_assessment', $oldid, $newitemid); 00195 } 00196 00197 protected function process_workshop_aggregation($data) { 00198 global $DB; 00199 00200 $data = (object)$data; 00201 $oldid = $data->id; 00202 00203 $data->workshopid = $this->get_new_parentid('workshop'); 00204 $data->userid = $this->get_mappingid('user', $data->userid); 00205 $data->timegraded = $this->apply_date_offset($data->timegraded); 00206 00207 $newitemid = $DB->insert_record('workshop_aggregations', $data); 00208 } 00209 00210 protected function after_execute() { 00211 // Add workshop related files, no need to match by itemname (just internally handled context) 00212 $this->add_related_files('mod_workshop', 'intro', null); 00213 $this->add_related_files('mod_workshop', 'instructauthors', null); 00214 $this->add_related_files('mod_workshop', 'instructreviewers', null); 00215 00216 // Add example submission related files, matching by 'workshop_examplesubmission' itemname 00217 $this->add_related_files('mod_workshop', 'submission_content', 'workshop_examplesubmission'); 00218 $this->add_related_files('mod_workshop', 'submission_attachment', 'workshop_examplesubmission'); 00219 00220 // Add submission related files, matching by 'workshop_submission' itemname 00221 $this->add_related_files('mod_workshop', 'submission_content', 'workshop_submission'); 00222 $this->add_related_files('mod_workshop', 'submission_attachment', 'workshop_submission'); 00223 } 00224 }