Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/mod/workshop/backup/moodle2/backup_workshop_stepslib.php
Go to the documentation of this file.
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 
00027 defined('MOODLE_INTERNAL') || die();
00028 
00034 class backup_workshop_activity_structure_step extends backup_activity_structure_step {
00035 
00036     protected function define_structure() {
00037 
00038         // are we including userinfo?
00039         $userinfo = $this->get_setting_value('userinfo');
00040 
00042         // XML nodes declaration - non-user data
00044 
00045         // root element describing workshop instance
00046         $workshop = new backup_nested_element('workshop', array('id'), array(
00047             'name', 'intro', 'introformat', 'instructauthors',
00048             'instructauthorsformat', 'instructreviewers',
00049             'instructreviewersformat', 'timemodified', 'phase', 'useexamples',
00050             'usepeerassessment', 'useselfassessment', 'grade', 'gradinggrade',
00051             'strategy', 'evaluation', 'gradedecimals', 'nattachments',
00052             'latesubmissions', 'maxbytes', 'examplesmode', 'submissionstart',
00053             'submissionend', 'assessmentstart', 'assessmentend'));
00054 
00055         // assessment forms definition
00056         $this->add_subplugin_structure('workshopform', $workshop, true);
00057 
00058         // grading evaluations data
00059         $this->add_subplugin_structure('workshopeval', $workshop, true);
00060 
00061         // example submissions
00062         $examplesubmissions = new backup_nested_element('examplesubmissions');
00063         $examplesubmission  = new backup_nested_element('examplesubmission', array('id'), array(
00064             'timecreated', 'timemodified', 'title', 'content', 'contentformat',
00065             'contenttrust', 'attachment'));
00066 
00067         // reference assessment of the example submission
00068         $referenceassessment  = new backup_nested_element('referenceassessment', array('id'), array(
00069             'timecreated', 'timemodified', 'grade'));
00070 
00071         // dimension grades for the reference assessment (that is how the form is filled)
00072         $this->add_subplugin_structure('workshopform', $referenceassessment, true);
00073 
00075         // XML nodes declaration - user data
00077 
00078         // assessments of example submissions
00079         $exampleassessments = new backup_nested_element('exampleassessments');
00080         $exampleassessment  = new backup_nested_element('exampleassessment', array('id'), array(
00081             'reviewerid', 'weight', 'timecreated', 'timemodified', 'grade',
00082             'gradinggrade', 'gradinggradeover', 'gradinggradeoverby',
00083             'feedbackauthor', 'feedbackauthorformat', 'feedbackreviewer',
00084             'feedbackreviewerformat'));
00085 
00086         // dimension grades for the assessment of example submission (that is assessment forms are filled)
00087         $this->add_subplugin_structure('workshopform', $exampleassessment, true);
00088 
00089         // submissions
00090         $submissions = new backup_nested_element('submissions');
00091         $submission  = new backup_nested_element('submission', array('id'), array(
00092             'authorid', 'timecreated', 'timemodified', 'title', 'content',
00093             'contentformat', 'contenttrust', 'attachment', 'grade',
00094             'gradeover', 'gradeoverby', 'feedbackauthor',
00095             'feedbackauthorformat', 'timegraded', 'published', 'late'));
00096 
00097         // allocated assessments
00098         $assessments = new backup_nested_element('assessments');
00099         $assessment  = new backup_nested_element('assessment', array('id'), array(
00100             'reviewerid', 'weight', 'timecreated', 'timemodified', 'grade',
00101             'gradinggrade', 'gradinggradeover', 'gradinggradeoverby',
00102             'feedbackauthor', 'feedbackauthorformat', 'feedbackreviewer',
00103             'feedbackreviewerformat'));
00104 
00105         // dimension grades for the assessment (that is assessment forms are filled)
00106         $this->add_subplugin_structure('workshopform', $assessment, true);
00107 
00108         // aggregations of grading grades in this workshop
00109         $aggregations = new backup_nested_element('aggregations');
00110         $aggregation = new backup_nested_element('aggregation', array('id'), array(
00111             'userid', 'gradinggrade', 'timegraded'));
00112 
00114         // build the tree in the order needed for restore
00116         $workshop->add_child($examplesubmissions);
00117         $examplesubmissions->add_child($examplesubmission);
00118 
00119         $examplesubmission->add_child($referenceassessment);
00120 
00121         $examplesubmission->add_child($exampleassessments);
00122         $exampleassessments->add_child($exampleassessment);
00123 
00124         $workshop->add_child($submissions);
00125         $submissions->add_child($submission);
00126 
00127         $submission->add_child($assessments);
00128         $assessments->add_child($assessment);
00129 
00130         $workshop->add_child($aggregations);
00131         $aggregations->add_child($aggregation);
00132 
00134         // data sources - non-user data
00136 
00137         $workshop->set_source_table('workshop', array('id' => backup::VAR_ACTIVITYID));
00138 
00139         $examplesubmission->set_source_sql("
00140             SELECT *
00141               FROM {workshop_submissions}
00142              WHERE workshopid = ? AND example = 1",
00143             array(backup::VAR_PARENTID));
00144 
00145         $referenceassessment->set_source_sql("
00146             SELECT *
00147               FROM {workshop_assessments}
00148              WHERE weight = 1 AND submissionid = ?",
00149             array(backup::VAR_PARENTID));
00150 
00152         // data sources - user related data
00154 
00155         if ($userinfo) {
00156 
00157             $exampleassessment->set_source_sql("
00158                 SELECT *
00159                   FROM {workshop_assessments}
00160                  WHERE weight = 0 AND submissionid = ?",
00161                 array(backup::VAR_PARENTID));
00162 
00163             $submission->set_source_sql("
00164                 SELECT *
00165                   FROM {workshop_submissions}
00166                  WHERE workshopid = ? AND example = 0",
00167                  array(backup::VAR_PARENTID));  // must use SQL here, for the same reason as above
00168 
00169             $assessment->set_source_table('workshop_assessments', array('submissionid' => backup::VAR_PARENTID));
00170 
00171             $aggregation->set_source_table('workshop_aggregations', array('workshopid' => backup::VAR_PARENTID));
00172         }
00173 
00175         // id annotations
00177 
00178         $exampleassessment->annotate_ids('user', 'reviewerid');
00179         $submission->annotate_ids('user', 'authorid');
00180         $submission->annotate_ids('user', 'gradeoverby');
00181         $assessment->annotate_ids('user', 'reviewerid');
00182         $assessment->annotate_ids('user', 'gradinggradeoverby');
00183         $aggregation->annotate_ids('user', 'userid');
00184 
00186         // file annotations
00188 
00189         $workshop->annotate_files('mod_workshop', 'intro', null); // no itemid used
00190         $workshop->annotate_files('mod_workshop', 'instructauthors', null); // no itemid used
00191         $workshop->annotate_files('mod_workshop', 'instructreviewers', null); // no itemid used
00192 
00193         $examplesubmission->annotate_files('mod_workshop', 'submission_content', 'id');
00194         $examplesubmission->annotate_files('mod_workshop', 'submission_attachment', 'id');
00195 
00196         $submission->annotate_files('mod_workshop', 'submission_content', 'id');
00197         $submission->annotate_files('mod_workshop', 'submission_attachment', 'id');
00198 
00199         // return the root element (workshop), wrapped into standard activity structure
00200         return $this->prepare_activity_structure($workshop);
00201     }
00202 }
 All Data Structures Namespaces Files Functions Variables Enumerations