Commit | Line | Data |
---|---|---|
77547b46 EL |
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 moodlecore | |
20 | * @subpackage backup-moodle2 | |
21 | * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} | |
22 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
23 | */ | |
24 | ||
25 | /** | |
26 | * Final task that provides all the final steps necessary in order to finish one | |
27 | * backup (mainly gathering references and creating the main xml) apart from | |
28 | * some final cleaning | |
29 | * | |
30 | * TODO: Finish phpdocs | |
31 | */ | |
32 | class backup_final_task extends backup_task { | |
33 | ||
34 | /** | |
35 | * Create all the steps that will be part of this task | |
36 | */ | |
37 | public function build() { | |
38 | ||
39 | // Set the backup::VAR_CONTEXTID setting to course context as far as next steps require that | |
40 | $coursectxid = get_context_instance(CONTEXT_COURSE, $this->get_courseid())->id; | |
41 | $this->add_setting(new backup_activity_generic_setting(backup::VAR_CONTEXTID, base_setting::IS_INTEGER, $coursectxid)); | |
42 | ||
d39595cc EL |
43 | // Set the backup::VAR_COURSEID setting to course, we'll need that in some steps |
44 | $courseid = $this->get_courseid(); | |
45 | $this->add_setting(new backup_activity_generic_setting(backup::VAR_COURSEID, base_setting::IS_INTEGER, $courseid)); | |
46 | ||
77547b46 EL |
47 | // Generate the groups file with the final annotated groups and groupings |
48 | // including membership based on setting | |
49 | $this->add_step(new backup_groups_structure_step('groups', 'groups.xml')); | |
50 | ||
78d47b30 | 51 | // Annotate all the user files (conditionally) (private profile and icon files) |
77547b46 EL |
52 | // Because each user has its own context, we need a separate/specialised step here |
53 | // This step also ensures that the contexts for all the users exist, so next | |
54 | // step can be safely executed (join between users and contexts) | |
55 | // Not executed if backup is without users of anonymized | |
56 | if ($this->get_setting_value('users') && !$this->get_setting_value('anonymize')) { | |
57 | $this->add_step(new backup_annotate_all_user_files('user_files')); | |
58 | } | |
59 | ||
e439a954 | 60 | // Generate the users file (conditionally) with the final annotated users |
77547b46 EL |
61 | // including custom profile fields, preferences, tags, role assignments and |
62 | // overrides | |
63 | if ($this->get_setting_value('users')) { | |
64 | $this->add_step(new backup_users_structure_step('users', 'users.xml')); | |
65 | } | |
66 | ||
67 | // Generate the top roles file with all the final annotated roles | |
68 | // that have been detected along the whole process. It's just | |
69 | // the list of role definitions (no assignments nor permissions) | |
70 | $this->add_step(new backup_final_roles_structure_step('roleslist', 'roles.xml')); | |
71 | ||
72 | // Generate the scales file with all the annotated scales | |
73 | $this->add_step(new backup_final_scales_structure_step('scaleslist', 'scales.xml')); | |
74 | ||
75 | // Generate the outcomes file with all the annotated outcomes | |
76 | $this->add_step(new backup_final_outcomes_structure_step('outcomeslist', 'outcomes.xml')); | |
77 | ||
78 | // Migrate the pending annotations to final (prev steps may have added some files) | |
79 | // This must be executed before backup files | |
80 | $this->add_step(new move_inforef_annotations_to_final('migrate_inforef')); | |
81 | ||
d39595cc EL |
82 | // Generate the gradebook file with categories and course grade items. Do it conditionally, using |
83 | // execute_condition() so only will be excuted if ALL module grade_items in course have been exported | |
84 | $this->add_step(new backup_gradebook_structure_step('course_gradebook','gradebook.xml')); | |
85 | ||
77547b46 EL |
86 | // Generate the files.xml file with all the (final) annotated files. At the same |
87 | // time copy all the files from moodle storage to backup storage (uses custom | |
88 | // backup_nested_element for that) | |
89 | $this->add_step(new backup_final_files_structure_step('fileslist', 'files.xml')); | |
90 | ||
91 | // Write the main moodle_backup.xml file, with all the information related | |
92 | // to the backup, settings, license, versions and other useful information | |
93 | $this->add_step(new backup_main_structure_step('mainfile', 'moodle_backup.xml')); | |
94 | ||
ce937f99 EL |
95 | // Generate the zip file |
96 | $this->add_step(new backup_zip_contents('zip_contents')); | |
97 | ||
98 | // Copy the generated zip file to final destination | |
99 | $this->add_step(new backup_store_backup_file('save_backupfile')); | |
100 | ||
e439a954 | 101 | // Clean the temp dir (conditionally) and drop temp table |
2de3539b EL |
102 | $this->add_step(new drop_and_clean_temp_stuff('drop_and_clean_temp_stuff')); |
103 | ||
77547b46 EL |
104 | $this->built = true; |
105 | } | |
106 | ||
107 | // Protected API starts here | |
108 | ||
109 | /** | |
110 | * Define the common setting that any backup type will have | |
111 | */ | |
112 | protected function define_settings() { | |
113 | // This task has not settings (could have them, like destination or so in the future, let's see) | |
114 | } | |
115 | } |