004809a04ae787901560f7a5210b507267e34acb
[moodle.git] / backup / moodle2 / restore_root_task.class.php
1 <?php
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/>.
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  */
25 /**
26  * Start task that provides all the settings common to all restores and other initial steps
27  *
28  * TODO: Finish phpdocs
29  */
30 class restore_root_task extends restore_task {
32     /**
33      * Create all the steps that will be part of this task
34      */
35     public function build() {
37         // Conditionally create the temp table (can exist from prechecks) and delete old stuff
38         $this->add_step(new restore_create_and_clean_temp_stuff('create_and_clean_temp_stuff'));
40         // If we haven't preloaded information, load all the included inforef records to temp_ids table
41         $this->add_step(new restore_load_included_inforef_records('load_inforef_records'));
43         // If we haven't preloaded information and are restoring user info, load all the needed users to temp_ids table
44         $this->add_step(new restore_load_included_users('load_user_records'));
46         // If we haven't preloaded information and are restoring user info, process all those needed users
47         // creating/mapping them as needed. Any problem here will cause exception as far as prechecks have
48         // performed the same process so, it's not possible to have errors here
49         $this->add_step(new restore_process_included_users('process_user_records'));
51         // Load all the needed files to temp_ids table
52         $this->add_step(new restore_load_included_files('load_file_records', 'files.xml'));
54         // Unconditionally, create all the needed users calculated in the previous step
55         $this->add_step(new restore_create_included_users('create_users'));
57         // Unconditionally, load create all the needed groups and groupings
58         $this->add_step(new restore_groups_structure_step('create_groups_and_groupings', 'groups.xml'));
60         // Unconditionally, load create all the needed scales
61         $this->add_step(new restore_scales_structure_step('create_scales', 'scales.xml'));
63         // Unconditionally, load create all the needed outcomes.
64         // TODO: restore outcomes
65         // $this->add_step(new restore_outcomes_structure_step('create_outcomes', 'outcomes.xml'));
67         // At the end, mark it as built
68         $this->built = true;
69     }
71 // Protected API starts here
73     /**
74      * Define the common setting that any restore type will have
75      */
76     protected function define_settings() {
78         // Load all the root settings found in backup file from controller
79         $rootsettings = $this->get_info()->root_settings;
81         // Define users setting (keeping it on hand to define dependencies)
82         $selectvalues = array(0=>get_string('no')); // Safer options
83         $defaultvalue = false;                      // Safer default
84         if (isset($rootsettings['users']) && $rootsettings['users']) { // Only enabled when available
85             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
86             $defaultvalue = true;
87         }
88         $users = new restore_users_setting('users', base_setting::IS_BOOLEAN, $defaultvalue);
89         $users->set_ui(new backup_setting_ui_select($users, $users->get_name(), $selectvalues));
90         $this->add_setting($users);
92         // Define role_assignments (dependent of users)
93         $selectvalues = array(0=>get_string('no')); // Safer options
94         $defaultvalue = false;                      // Safer default
95         if (isset($rootsettings['role_assignments']) && $rootsettings['role_assignments']) { // Only enabled when available
96             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
97             $defaultvalue = true;
98         }
99         $roleassignments = new restore_role_assignments_setting('role_assignments', base_setting::IS_BOOLEAN, $defaultvalue);
100         $roleassignments->set_ui(new backup_setting_ui_select($roleassignments, $roleassignments->get_name(), $selectvalues));
101         $this->add_setting($roleassignments);
102         $users->add_dependency($roleassignments);
104         // Define user_files (dependent of users)
105         $selectvalues = array(0=>get_string('no')); // Safer options
106         $defaultvalue = false;                      // Safer default
107         if (isset($rootsettings['user_files']) && $rootsettings['user_files']) { // Only enabled when available
108             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
109             $defaultvalue = true;
110         }
111         $userfiles = new restore_user_files_setting('user_files', base_setting::IS_BOOLEAN, $defaultvalue);
112         $userfiles->set_ui(new backup_setting_ui_select($userfiles, $userfiles->get_name(), $selectvalues));
113         $this->add_setting($userfiles);
114         $users->add_dependency($userfiles);
116         // Define activitites
117         $selectvalues = array(0=>get_string('no')); // Safer options
118         $defaultvalue = false;                      // Safer default
119         if (isset($rootsettings['activities']) && $rootsettings['activities']) { // Only enabled when available
120             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
121             $defaultvalue = true;
122         }
123         $activities = new restore_activities_setting('activities', base_setting::IS_BOOLEAN, $defaultvalue);
124         $activities->set_ui(new backup_setting_ui_select($activities, $activities->get_name(), $selectvalues));
125         $this->add_setting($activities);
127         // Define blocks
128         $selectvalues = array(0=>get_string('no')); // Safer options
129         $defaultvalue = false;                      // Safer default
130         if (isset($rootsettings['blocks']) && $rootsettings['blocks']) { // Only enabled when available
131             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
132             $defaultvalue = true;
133         }
134         $blocks = new restore_generic_setting('blocks', base_setting::IS_BOOLEAN, $defaultvalue);
135         $blocks->set_ui(new backup_setting_ui_select($blocks, $blocks->get_name(), $selectvalues));
136         $this->add_setting($blocks);
138         // Define filters
139         $selectvalues = array(0=>get_string('no')); // Safer options
140         $defaultvalue = false;                      // Safer default
141         if (isset($rootsettings['filters']) && $rootsettings['filters']) { // Only enabled when available
142             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
143             $defaultvalue = true;
144         }
145         $filters = new restore_generic_setting('filters', base_setting::IS_BOOLEAN, $defaultvalue);
146         $filters->set_ui(new backup_setting_ui_select($filters, $filters->get_name(), $selectvalues));
147         $this->add_setting($filters);
149         // Define comments (dependent of users)
150         $selectvalues = array(0=>get_string('no')); // Safer options
151         $defaultvalue = false;                      // Safer default
152         if (isset($rootsettings['comments']) && $rootsettings['comments']) { // Only enabled when available
153             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
154             $defaultvalue = true;
155         }
156         $comments = new restore_comments_setting('comments', base_setting::IS_BOOLEAN, $defaultvalue);
157         $comments->set_ui(new backup_setting_ui_select($comments, $comments->get_name(), $selectvalues));
158         $this->add_setting($comments);
159         $users->add_dependency($comments);
161         // Define completion (dependent of users)
162         $selectvalues = array(0=>get_string('no')); // Safer options
163         $defaultvalue = false;                      // Safer default
164         if (isset($rootsettings['userscompletion']) && $rootsettings['userscompletion']) { // Only enabled when available
165             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
166             $defaultvalue = true;
167         }
168         $completion = new restore_userscompletion_setting('userscompletion', base_setting::IS_BOOLEAN, $defaultvalue);
169         $completion->set_ui(new backup_setting_ui_select($completion, $completion->get_name(), $selectvalues));
170         $this->add_setting($completion);
171         $users->add_dependency($completion);
173         // Define logs (dependent of users)
174         $selectvalues = array(0=>get_string('no')); // Safer options
175         $defaultvalue = false;                      // Safer default
176         if (isset($rootsettings['logs']) && $rootsettings['logs']) { // Only enabled when available
177             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
178             $defaultvalue = true;
179         }
180         $logs = new restore_logs_setting('logs', base_setting::IS_BOOLEAN, $defaultvalue);
181         $logs->set_ui(new backup_setting_ui_select($logs, $logs->get_name(), $selectvalues));
182         $this->add_setting($logs);
183         $users->add_dependency($logs);
185         // Define grade_histories (dependent of users)
186         $selectvalues = array(0=>get_string('no')); // Safer options
187         $defaultvalue = false;                      // Safer default
188         if (isset($rootsettings['grade_histories']) && $rootsettings['grade_histories']) { // Only enabled when available
189             $selectvalues = array(1=>get_string('yes'), 0=>get_string('no'));
190             $defaultvalue = true;
191         }
192         $gradehistories = new restore_grade_histories_setting('grade_histories', base_setting::IS_BOOLEAN, $defaultvalue);
193         $gradehistories->set_ui(new backup_setting_ui_select($gradehistories, $gradehistories->get_name(), $selectvalues));
194         $this->add_setting($gradehistories);
195         $users->add_dependency($gradehistories);
196     }