Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
// This file is part of Moodle - http://moodle.org/
4
//
5
// Moodle is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// Moodle is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17
 
18
/**
19
 * @package   mod_workshop
20
 * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
21
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
22
 */
23
 
24
/**
25
 * Define all the restore steps that will be used by the restore_workshop_activity_task
26
 */
27
 
28
/**
29
 * Structure step to restore one workshop activity
30
 */
31
class restore_workshop_activity_structure_step extends restore_activity_structure_step {
32
 
33
    protected function define_structure() {
34
 
35
        $paths = array();
36
 
37
        $userinfo = $this->get_setting_value('userinfo'); // are we including userinfo?
38
 
39
        ////////////////////////////////////////////////////////////////////////
40
        // XML interesting paths - non-user data
41
        ////////////////////////////////////////////////////////////////////////
42
 
43
        // root element describing workshop instance
44
        $workshop = new restore_path_element('workshop', '/activity/workshop');
45
        $paths[] = $workshop;
46
 
47
        // Apply for 'workshopform' subplugins optional paths at workshop level
48
        $this->add_subplugin_structure('workshopform', $workshop);
49
 
50
        // Apply for 'workshopeval' subplugins optional paths at workshop level
51
        $this->add_subplugin_structure('workshopeval', $workshop);
52
 
53
        // example submissions
54
        $paths[] = new restore_path_element('workshop_examplesubmission',
55
                       '/activity/workshop/examplesubmissions/examplesubmission');
56
 
57
        // reference assessment of the example submission
58
        $referenceassessment = new restore_path_element('workshop_referenceassessment',
59
                                   '/activity/workshop/examplesubmissions/examplesubmission/referenceassessment');
60
        $paths[] = $referenceassessment;
61
 
62
        // Apply for 'workshopform' subplugins optional paths at referenceassessment level
63
        $this->add_subplugin_structure('workshopform', $referenceassessment);
64
 
65
        // End here if no-user data has been selected
66
        if (!$userinfo) {
67
            return $this->prepare_activity_structure($paths);
68
        }
69
 
70
        ////////////////////////////////////////////////////////////////////////
71
        // XML interesting paths - user data
72
        ////////////////////////////////////////////////////////////////////////
73
 
74
        // assessments of example submissions
75
        $exampleassessment = new restore_path_element('workshop_exampleassessment',
76
                                 '/activity/workshop/examplesubmissions/examplesubmission/exampleassessments/exampleassessment');
77
        $paths[] = $exampleassessment;
78
 
79
        // Apply for 'workshopform' subplugins optional paths at exampleassessment level
80
        $this->add_subplugin_structure('workshopform', $exampleassessment);
81
 
82
        // submissions
83
        $paths[] = new restore_path_element('workshop_submission', '/activity/workshop/submissions/submission');
84
 
85
        // allocated assessments
86
        $assessment = new restore_path_element('workshop_assessment',
87
                          '/activity/workshop/submissions/submission/assessments/assessment');
88
        $paths[] = $assessment;
89
 
90
        // Apply for 'workshopform' subplugins optional paths at assessment level
91
        $this->add_subplugin_structure('workshopform', $assessment);
92
 
93
        // aggregations of grading grades in this workshop
94
        $paths[] = new restore_path_element('workshop_aggregation', '/activity/workshop/aggregations/aggregation');
95
 
96
        // Return the paths wrapped into standard activity structure
97
        return $this->prepare_activity_structure($paths);
98
    }
99
 
100
    protected function process_workshop($data) {
101
        global $DB;
102
 
103
        $data = (object)$data;
104
        $oldid = $data->id;
105
        $data->course = $this->get_courseid();
106
 
107
        $data->strategy = clean_param($data->strategy, PARAM_PLUGIN);
108
        $data->evaluation = clean_param($data->evaluation, PARAM_PLUGIN);
109
 
110
        // Any changes to the list of dates that needs to be rolled should be same during course restore and course reset.
111
        // See MDL-9367.
112
        $data->submissionstart = $this->apply_date_offset($data->submissionstart);
113
        $data->submissionend = $this->apply_date_offset($data->submissionend);
114
        $data->assessmentstart = $this->apply_date_offset($data->assessmentstart);
115
        $data->assessmentend = $this->apply_date_offset($data->assessmentend);
116
 
117
        if ($data->nattachments == 0) {
118
            // Convert to the new method for disabling file submissions.
119
            $data->submissiontypefile = WORKSHOP_SUBMISSION_TYPE_DISABLED;
120
            $data->submissiontypetext = WORKSHOP_SUBMISSION_TYPE_REQUIRED;
121
            $data->nattachments = 1;
122
        }
123
 
124
        // insert the workshop record
125
        $newitemid = $DB->insert_record('workshop', $data);
126
        // immediately after inserting "activity" record, call this
127
        $this->apply_activity_instance($newitemid);
128
    }
129
 
130
    protected function process_workshop_examplesubmission($data) {
131
        global $DB;
132
 
133
        $data = (object)$data;
134
        $oldid = $data->id;
135
 
136
        $data->workshopid = $this->get_new_parentid('workshop');
137
        $data->example = 1;
138
        $data->authorid = $this->task->get_userid();
139
 
140
        $newitemid = $DB->insert_record('workshop_submissions', $data);
141
        $this->set_mapping('workshop_examplesubmission', $oldid, $newitemid, true); // Mapping with files
142
    }
143
 
144
    protected function process_workshop_referenceassessment($data) {
145
        global $DB;
146
 
147
        $data = (object)$data;
148
        $oldid = $data->id;
149
 
150
        $data->submissionid = $this->get_new_parentid('workshop_examplesubmission');
151
        $data->reviewerid = $this->task->get_userid();
152
 
153
        $newitemid = $DB->insert_record('workshop_assessments', $data);
154
        $this->set_mapping('workshop_referenceassessment', $oldid, $newitemid, true); // Mapping with files
155
    }
156
 
157
    protected function process_workshop_exampleassessment($data) {
158
        global $DB;
159
 
160
        $data = (object)$data;
161
        $oldid = $data->id;
162
 
163
        $data->submissionid = $this->get_new_parentid('workshop_examplesubmission');
164
        $data->reviewerid = $this->get_mappingid('user', $data->reviewerid);
165
 
166
        $newitemid = $DB->insert_record('workshop_assessments', $data);
167
        $this->set_mapping('workshop_exampleassessment', $oldid, $newitemid, true); // Mapping with files
168
    }
169
 
170
    protected function process_workshop_submission($data) {
171
        global $DB;
172
 
173
        $data = (object)$data;
174
        $oldid = $data->id;
175
 
176
        $data->workshopid = $this->get_new_parentid('workshop');
177
        $data->example = 0;
178
        $data->authorid = $this->get_mappingid('user', $data->authorid);
179
 
180
        $newitemid = $DB->insert_record('workshop_submissions', $data);
181
        $this->set_mapping('workshop_submission', $oldid, $newitemid, true); // Mapping with files
182
    }
183
 
184
    protected function process_workshop_assessment($data) {
185
        global $DB;
186
 
187
        $data = (object)$data;
188
        $oldid = $data->id;
189
 
190
        $data->submissionid = $this->get_new_parentid('workshop_submission');
191
        $data->reviewerid = $this->get_mappingid('user', $data->reviewerid);
192
 
193
        $newitemid = $DB->insert_record('workshop_assessments', $data);
194
        $this->set_mapping('workshop_assessment', $oldid, $newitemid, true); // Mapping with files
195
    }
196
 
197
    protected function process_workshop_aggregation($data) {
198
        global $DB;
199
 
200
        $data = (object)$data;
201
        $oldid = $data->id;
202
 
203
        $data->workshopid = $this->get_new_parentid('workshop');
204
        $data->userid = $this->get_mappingid('user', $data->userid);
205
 
206
        $newitemid = $DB->insert_record('workshop_aggregations', $data);
207
        $this->set_mapping('workshop_aggregation', $oldid, $newitemid, true);
208
    }
209
 
210
    protected function after_execute() {
211
        // Add workshop related files, no need to match by itemname (just internally handled context)
212
        $this->add_related_files('mod_workshop', 'intro', null);
213
        $this->add_related_files('mod_workshop', 'instructauthors', null);
214
        $this->add_related_files('mod_workshop', 'instructreviewers', null);
215
        $this->add_related_files('mod_workshop', 'conclusion', null);
216
 
217
        // Add example submission related files, matching by 'workshop_examplesubmission' itemname
218
        $this->add_related_files('mod_workshop', 'submission_content', 'workshop_examplesubmission');
219
        $this->add_related_files('mod_workshop', 'submission_attachment', 'workshop_examplesubmission');
220
 
221
        // Add reference assessment related files, matching by 'workshop_referenceassessment' itemname
222
        $this->add_related_files('mod_workshop', 'overallfeedback_content', 'workshop_referenceassessment');
223
        $this->add_related_files('mod_workshop', 'overallfeedback_attachment', 'workshop_referenceassessment');
224
 
225
        // Add example assessment related files, matching by 'workshop_exampleassessment' itemname
226
        $this->add_related_files('mod_workshop', 'overallfeedback_content', 'workshop_exampleassessment');
227
        $this->add_related_files('mod_workshop', 'overallfeedback_attachment', 'workshop_exampleassessment');
228
 
229
        // Add submission related files, matching by 'workshop_submission' itemname
230
        $this->add_related_files('mod_workshop', 'submission_content', 'workshop_submission');
231
        $this->add_related_files('mod_workshop', 'submission_attachment', 'workshop_submission');
232
 
233
        // Add assessment related files, matching by 'workshop_assessment' itemname
234
        $this->add_related_files('mod_workshop', 'overallfeedback_content', 'workshop_assessment');
235
        $this->add_related_files('mod_workshop', 'overallfeedback_attachment', 'workshop_assessment');
236
    }
237
}