source: moodle/trunk/fuentes/backup/moodle2/backup_root_task.class.php @ 1331

Last change on this file since 1331 was 1331, checked in by jrpelegrina, 3 years ago

Updated to moodle 3.0.3

File size: 7.9 KB
Line 
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 * Defines backup_root_task class
20 *
21 * @package     core_backup
22 * @subpackage  moodle2
23 * @category    backup
24 * @copyright   2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
25 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26 */
27
28defined('MOODLE_INTERNAL') || die();
29
30/**
31 * Start task that provides all the settings common to all backups and some initialization steps
32 *
33 * TODO: Finish phpdocs
34 */
35class backup_root_task extends backup_task {
36
37    /**
38     * Create all the steps that will be part of this task
39     */
40    public function build() {
41
42        // Add all the steps needed to prepare any moodle2 backup to work
43        $this->add_step(new create_and_clean_temp_stuff('create_and_clean_temp_stuff'));
44
45        $this->built = true;
46    }
47
48// Protected API starts here
49
50    protected function converter_deps($main_setting, $converters) {
51        foreach ($this->settings as $setting) {
52            $name = $setting->get_name();
53            if (in_array($name, $converters)) {
54                $setvalue = convert_helper::export_converter_dependencies($name, $main_setting->get_name());
55                if ($setvalue !== false) {
56                    $setting->add_dependency($main_setting, $setvalue, array('value' => $name));
57                }
58            }
59        }
60    }
61
62    /**
63     * Define the common setting that any backup type will have
64     */
65    protected function define_settings() {
66        global $CFG;
67        require_once($CFG->dirroot . '/backup/util/helper/convert_helper.class.php');
68        // Define filename setting
69        $filename = new backup_filename_setting('filename', base_setting::IS_FILENAME, 'backup.mbz');
70        $filename->set_ui_filename(get_string('filename', 'backup'), 'backup.mbz', array('size'=>50));
71        $this->add_setting($filename);
72
73        // Present converter settings only in type course and mode general backup operations.
74        $converters = array();
75        if ($this->plan->get_type() == backup::TYPE_1COURSE and $this->plan->get_mode() == backup::MODE_GENERAL) {
76            $converters = convert_helper::available_converters(false);
77            foreach ($converters as $cnv) {
78                $formatcnv = new backup_users_setting($cnv, base_setting::IS_BOOLEAN, false);
79                $formatcnv->set_ui(new backup_setting_ui_checkbox($formatcnv, get_string('backupformat'.$cnv, 'backup')));
80                $this->add_setting($formatcnv);
81            }
82        }
83
84        // Define users setting (keeping it on hand to define dependencies)
85        $users = new backup_users_setting('users', base_setting::IS_BOOLEAN, true);
86        $users->set_ui(new backup_setting_ui_checkbox($users, get_string('rootsettingusers', 'backup')));
87        $this->add_setting($users);
88        $this->converter_deps($users, $converters);
89
90        // Define anonymize (dependent of users)
91        $anonymize = new backup_anonymize_setting('anonymize', base_setting::IS_BOOLEAN, false);
92        $anonymize->set_ui(new backup_setting_ui_checkbox($anonymize, get_string('rootsettinganonymize', 'backup')));
93        $this->add_setting($anonymize);
94        $users->add_dependency($anonymize);
95
96        // Define role_assignments (dependent of users)
97        $roleassignments = new backup_role_assignments_setting('role_assignments', base_setting::IS_BOOLEAN, true);
98        $roleassignments->set_ui(new backup_setting_ui_checkbox($roleassignments, get_string('rootsettingroleassignments', 'backup')));
99        $this->add_setting($roleassignments);
100        $users->add_dependency($roleassignments);
101
102        // Define activities
103        $activities = new backup_activities_setting('activities', base_setting::IS_BOOLEAN, true);
104        $activities->set_ui(new backup_setting_ui_checkbox($activities, get_string('rootsettingactivities', 'backup')));
105        $this->add_setting($activities);
106
107        // Define blocks
108        $blocks = new backup_generic_setting('blocks', base_setting::IS_BOOLEAN, true);
109        $blocks->set_ui(new backup_setting_ui_checkbox($blocks, get_string('rootsettingblocks', 'backup')));
110        $this->add_setting($blocks);
111        $this->converter_deps($blocks, $converters);
112
113        // Define filters
114        $filters = new backup_generic_setting('filters', base_setting::IS_BOOLEAN, true);
115        $filters->set_ui(new backup_setting_ui_checkbox($filters, get_string('rootsettingfilters', 'backup')));
116        $this->add_setting($filters);
117        $this->converter_deps($filters, $converters);
118
119        // Define comments (dependent of users)
120        $comments = new backup_comments_setting('comments', base_setting::IS_BOOLEAN, true);
121        $comments->set_ui(new backup_setting_ui_checkbox($comments, get_string('rootsettingcomments', 'backup')));
122        $this->add_setting($comments);
123        $users->add_dependency($comments);
124
125        // Define badges (dependent of activities).
126        $badges = new backup_badges_setting('badges', base_setting::IS_BOOLEAN, true);
127        $badges->set_ui(new backup_setting_ui_checkbox($badges, get_string('rootsettingbadges', 'backup')));
128        $this->add_setting($badges);
129        $activities->add_dependency($badges);
130        $users->add_dependency($badges);
131
132        // Define calendar events.
133        $events = new backup_calendarevents_setting('calendarevents', base_setting::IS_BOOLEAN, true);
134        $events->set_ui(new backup_setting_ui_checkbox($events, get_string('rootsettingcalendarevents', 'backup')));
135        $this->add_setting($events);
136
137        // Define completion (dependent of users)
138        $completion = new backup_userscompletion_setting('userscompletion', base_setting::IS_BOOLEAN, true);
139        $completion->set_ui(new backup_setting_ui_checkbox($completion, get_string('rootsettinguserscompletion', 'backup')));
140        $this->add_setting($completion);
141        $users->add_dependency($completion);
142
143        // Define logs (dependent of users)
144        $logs = new backup_logs_setting('logs', base_setting::IS_BOOLEAN, true);
145        $logs->set_ui(new backup_setting_ui_checkbox($logs, get_string('rootsettinglogs', 'backup')));
146        $this->add_setting($logs);
147        $users->add_dependency($logs);
148
149        // Define grade_histories (dependent of users)
150        $gradehistories = new backup_generic_setting('grade_histories', base_setting::IS_BOOLEAN, true);
151        $gradehistories->set_ui(new backup_setting_ui_checkbox($gradehistories, get_string('rootsettinggradehistories', 'backup')));
152        $this->add_setting($gradehistories);
153        $users->add_dependency($gradehistories);
154        // The restore does not process the grade histories when some activities are ignored.
155        // So let's define a dependency to prevent false expectations from our users.
156        $activities->add_dependency($gradehistories);
157
158        // Define question bank inclusion setting.
159        $questionbank = new backup_generic_setting('questionbank', base_setting::IS_BOOLEAN, true);
160        $questionbank->set_ui(new backup_setting_ui_checkbox($questionbank, get_string('rootsettingquestionbank', 'backup')));
161        $this->add_setting($questionbank);
162
163        $groups = new backup_groups_setting('groups', base_setting::IS_BOOLEAN, true);
164        $groups->set_ui(new backup_setting_ui_checkbox($groups, get_string('rootsettinggroups', 'backup')));
165        $this->add_setting($groups);
166    }
167}
Note: See TracBrowser for help on using the repository browser.