Merge branch 'MDL-27515_m19' of git://github.com/rwijaya/moodle into MOODLE_19_STABLE
[moodle.git] / backup / backup_form.html
blob4f896a87794dafb663666af7dfe19e4485684505
1 <?php //$Id$
2 //This page prints the backup form to select everything
4 //Check login
5 require_login();
7 //Init backupuserinfo
8 $backupuserinfo = false;
10 if (!empty($course->id)) {
11 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
12 if (empty($to)) {
13 error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php");
14 } else {
15 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
16 error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php");
20 $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_COURSE, $course->id));
21 } else {
22 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
23 error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
25 $backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM));
28 //Check site
29 if (!$site = get_site()) {
30 error("Site not found!");
33 //Checks for the required files/functions to backup every mod
34 //And check if there is data about it
35 $count = 0;
36 if ($allmods = get_records('modules', 'visible', 1) ) {
37 foreach ($allmods as $mod) {
38 $modname = $mod->name;
39 $modfile = "$CFG->dirroot/mod/$modname/backuplib.php";
40 $modbackup = $modname."_backup_mods";
41 $modbackupone = $modname.'_backup_one_mod';
42 $modcheckbackup = $modname."_check_backup_mods";
43 if (file_exists($modfile)) {
44 include_once($modfile);
45 if (function_exists($modbackup) and function_exists($modcheckbackup)) {
46 $var = "exists_".$modname;
47 $$var = true;
48 $count++;
49 // check that there are instances and we can back them up individually
50 if (count_records('course_modules','course',$course->id,'module',$mod->id) && function_exists($modbackupone)) {
51 $var = 'exists_one_'.$modname;
52 $$var = true;
56 //Check data
57 //Check module info
58 $var = "backup_".$modname;
59 $$var = optional_param( $var,1);
60 //Check include user info
61 $var = "backup_user_info_".$modname;
62 $$var = optional_param( $var,1);
66 //Check other parameters
67 $backup_metacourse = optional_param('backup_metacourse',1);
68 $backup_users = optional_param('backup_users',1);
69 $backup_logs = optional_param('backup_logs',0);
70 $backup_user_files = optional_param('backup_user_files',1);
71 $backup_course_files = optional_param('backup_course_files',1);
72 $backup_site_files = optional_param('backup_site_files',1);
73 $backup_gradebook_history = optional_param('backup_gradebook_history', 0, PARAM_INT);
74 $backup_messages = optional_param('backup_messages',1);
75 $backup_blogs = optional_param('backup_blogs',1);
77 if ($count == 0) {
78 notice("No backupable modules are installed!");
83 <script type="text/javascript">
84 <!--
85 function selectItemInMenuByName(formId, menuName, selectIndex ) {
86 myForm = document.getElementById(formId)
87 for (i=0,n=myForm.elements.length;i<n;i++) {
88 myLen = menuName.length;
89 myName = myForm.elements[i].name;
90 myType = myForm.elements[i].type;
91 if (myName.substring(0,myLen) == menuName && myType == "select-one") {
92 myForm.elements[i].options[selectIndex].selected = true;
97 function selectItemInRadioByName(formId, radioName, selectIndex ) {
98 myForm = document.getElementById(formId)
99 for (i=0,n=myForm.elements.length;i<n;i++) {
100 myLen = radioName.length;
101 myName = myForm.elements[i].name;
102 myType = myForm.elements[i].type;
103 if (myName.substring(0,myLen) == radioName && myType == "radio") {
104 myRadioGroup = myForm.elements[myName];
105 myRadioGroup[selectIndex].checked = true;
110 function selectItemInCheckboxByName(formId, checkName, checked ) {
111 myForm = document.getElementById(formId);
112 for (i=0,n=myForm.elements.length;i<n;i++) {
113 myLen = checkName.length;
114 myName = myForm.elements[i].name;
115 myType = myForm.elements[i].type;
116 if (myName.substring(0,myLen) == checkName && myType == "checkbox") {
117 myForm.elements[i].checked = checked;
122 </script>
123 <form id="form1" method="post" action="backup.php">
124 <table cellpadding="5" style="margin-left:auto;margin-right:auto;">
125 <?php
126 echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
128 /// Acummulator for hidden options and proper XHTML output
129 $hidden_options = '';
130 //Now, check modules and info and show posibilities
131 if ($allmods = get_records('modules', 'visible', 1) ) {
132 //Print option to select/deselect everything with 1 click.
133 echo "<tr>";
134 echo "<td align=\"right\">";
135 echo '<b>'.get_string("include")."</b>";
136 echo "</td><td>";
137 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', true);\">". get_string("all")."</a>/";
138 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', false);\">". get_string("none")."</a>";
139 echo "</td>";
140 if (empty($to) and $backupuserinfo) {
141 echo "<td align=\"right\">";
142 echo '<b>&nbsp;</b>';
143 echo "</td><td>";
144 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', true);\">". get_string("all")."</a>/";
145 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', false);\">". get_string("none")."</a>";
146 echo "</td>";
147 } else {
148 echo "<td colspan=\"2\">&nbsp;</td>";
150 echo "</tr>";
151 echo "<tr><td colspan=\"4\"><hr /></td></tr>";
152 $currentrow = 0;
153 foreach ($allmods as $mod) {
154 $modname = $mod->name;
155 $modbackup = $modname."_backup_mods";
156 //If exists the lib & function
157 $var = 'exists_'.$modname;
158 $exvar = 'exists_one_'.$modname;
159 if (!empty($$var) and !empty($$exvar)) {
160 //Print the full tr
161 echo "<tr class=\"r".$currentrow."\">";
162 echo " <td align=\"right\">&nbsp;";
163 echo "</td><td>\n";
164 $backup_options[0] = get_string("no");
165 $backup_options[1] = get_string("yes");
166 $var = "backup_".$modname;
167 //choose_from_menu($backup_options, $var, $$var, "");
168 //Print the checkbox
169 print_checkbox($var, $$var, $$var, get_string("modulenameplural",$modname),'','selectItemInCheckboxByName(\'form1\',\'backup_'.$modname.'\',this.checked)');
170 echo "</td><td align=\"right\">&nbsp;";
171 echo "</td><td>";
172 $var = "backup_user_info_".$modname;
173 if (empty($to) and $backupuserinfo) {
174 $backup_user_options[0] = get_string("withoutuserdata");
175 $backup_user_options[1] = get_string("withuserdata");
176 //choose_from_menu($backup_user_options, $var, $$var, "");
177 print_checkbox($var, $$var, $$var, get_string("userdata"),'','selectItemInCheckboxByName(\'form1\',\'backup_user_info_'.$modname.'\',this.checked)');
178 } else {
179 echo '<input type="hidden" name="'.$var.'" value="0" />';
181 echo "</td></tr>\n";
182 echo '<tr><td></td><td colspan="3"><table class="backup-form-instances">';
183 $instances = get_all_instances_in_course($modname, $course, NULL, true);
184 $var = $exvar;
185 foreach ($instances as $instance) {
186 echo '<tr><td>';
187 $var = 'backup_'.$modname.'_instance_'.$instance->id;
188 $$var = optional_param($var,1);
189 print_checkbox($var,$$var,$$var,$instance->name,$instance->name,'this.form.elements[\'backup_'.$modname.'\'].checked=1;');
190 echo '</td><td align="right">&nbsp;';
191 $var = 'backup_user_info_'.$modname.'_instance_'.$instance->id;
192 $$var = optional_param($var,1);
193 if (empty($to) and $backupuserinfo) {
194 print_checkbox($var,$$var,$$var,get_string('userdata'),'','this.form.elements[\'backup_user_info_'.$modname.'\'].checked=1;');
195 } else {
196 echo '<input type="hidden" name="'.$var.'" value="0" />';
198 echo '</td></tr>';
200 echo '</table></td></tr>';
203 //Line
204 echo "<tr><td colspan=\"4\"><hr /></td></tr>\n";
206 if (empty($to) && !empty($course->metacourse)) {
207 //Now print the Metacourse tr
208 echo "<tr>";
209 echo "<td align=\"right\" colspan=\"2\"><b>";
210 echo '<label for="menubackup_metacourse">'.get_string ("metacourse").'</label>';
211 echo "</b></td><td colspan=\"2\">";
212 $meta_options[0] = get_string("no");
213 $meta_options[1] = get_string("yes");
214 choose_from_menu($meta_options, "backup_metacourse", $backup_metacourse, "");
215 echo "</td></tr>";
217 else {
218 $hidden_options .= '<input type="hidden" name="backup_metacourse" value="0" />';
221 if (empty($to) and $backupuserinfo) {
222 //Now print the Users tr
223 echo "<tr>";
224 echo "<td align=\"right\" colspan=\"2\"><b>";
225 echo '<label for="menubackup_users">'.get_string ("users").'</label>';
226 echo "</b></td><td colspan=\"2\">";
227 if (has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
228 $user_options[0] = get_string("all");
230 $user_options[1] = get_string("course");
231 $user_options[2] = get_string("none");
232 choose_from_menu($user_options, "backup_users", $backup_users, "");
233 echo "</td></tr>";
235 else {
236 $hidden_options .= '<input type="hidden" name="backup_users" value="2" />';
239 if (empty($to) and $backupuserinfo) {
240 //Now print the Logs tr
241 echo "<tr>";
242 echo "<td align=\"right\" colspan=\"2\"><b>";
243 echo '<label for="menubackup_logs">'.get_string ("logs").'</label>';
244 echo "</b></td><td colspan=\"2\">";
245 $log_options[0] = get_string("no");
246 $log_options[1] = get_string("yes");
247 choose_from_menu($log_options, "backup_logs", $backup_logs, "");
248 echo "</td></tr>";
250 else {
251 $hidden_options .= '<input type="hidden" name="backup_logs" value="0" />';
254 if (empty($to) and $backupuserinfo) {
255 //Now print the User Files tr
256 echo "<tr>";
257 echo "<td align=\"right\" colspan=\"2\"><b>";
258 echo '<label for="menubackup_user_files">'.get_string ("userfiles").'</label>';
259 echo "</b></td><td colspan=\"2\">";
260 $user_file_options[0] = get_string("no");
261 $user_file_options[1] = get_string("yes");
262 choose_from_menu($user_file_options, "backup_user_files", $backup_user_files, "");
263 echo "</td></tr>";
265 else {
266 $hidden_options .= '<input type="hidden" name="backup_user_files" value="0" />';
269 //Now print the Course Files tr
270 echo "<tr>";
271 echo "<td align=\"right\" colspan=\"2\"><b>";
272 echo '<label for="menubackup_course_files">'.get_string ("coursefiles").'</label>';
273 echo "</b></td><td colspan=\"2\">";
274 $course_file_options[0] = get_string("no");
275 $course_file_options[1] = get_string("yes");
276 choose_from_menu($course_file_options, "backup_course_files", $backup_course_files, "");
277 echo "</td></tr>";
280 if ($course->id != SITEID){
281 //Now print the site Files tr
282 echo "<tr>";
283 echo "<td align=\"right\" colspan=\"2\"><b>";
284 echo '<label for="menubackup_site_files">'.get_string ("sitefilesused").'</label>';
285 helpbutton('sitefilesused', get_string('sitefilesused'));
286 echo "</b></td><td colspan=\"2\">";
287 $course_file_options[0] = get_string("no");
288 $course_file_options[1] = get_string("yes");
289 choose_from_menu($course_file_options, "backup_site_files", $backup_site_files, "");
290 echo "</td></tr>";
293 // do you want grade histories to be backed up?
294 if (empty($to) and $backupuserinfo and empty($CFG->disablegradehistory)) {
295 echo "<tr>";
296 echo "<td align=\"right\" colspan=\"2\"><b>";
297 echo '<label for="menubackup_gradebook_history">'.get_string ('gradebookhistories', 'grades').'</label>';
298 echo "</b></td><td colspan=\"2\">";
299 $gradebook_history_options[0] = get_string("no");
300 $gradebook_history_options[1] = get_string("yes");
301 choose_from_menu($gradebook_history_options, "backup_gradebook_history", $backup_gradebook_history, "");
302 echo "</td></tr>";
303 } else {
304 $hidden_options .= '<input type="hidden" name="backup_gradebook_history" value="0" />';
307 if (empty($to) and $backupuserinfo and $course->id == SITEID) {
308 //If we are in a SITEID backup print the Messages tr
309 echo "<tr>";
310 echo "<td align=\"right\" colspan=\"2\"><b>";
311 echo '<label for="menubackup_messages">'.get_string ('messages', 'message').'</label>';
312 echo "</b></td><td colspan=\"2\">";
313 $mess_options[0] = get_string("no");
314 $mess_options[1] = get_string("yes");
315 choose_from_menu($mess_options, "backup_messages", $backup_messages, "");
316 echo "</td></tr>";
318 else {
319 $hidden_options .= '<input type="hidden" name="backup_messages" value="0" />';
322 if (empty($to) and $backupuserinfo and $course->id == SITEID and !empty($CFG->bloglevel)) {
323 //If we are in a SITEID backup and blogs are enabled print the Blogs tr
324 echo "<tr>";
325 echo "<td align=\"right\" colspan=\"2\"><b>";
326 echo get_string ('blogs','blog').":";
327 echo "</b></td><td colspan=\"2\">";
328 $blog_options[0] = get_string("no");
329 $blog_options[1] = get_string("yes");
330 choose_from_menu($blog_options, "backup_blogs", $backup_blogs, "");
331 echo "</td></tr>";
333 else {
334 $hidden_options .= '<input type="hidden" name="backup_blogs" value="0" />';
338 //Now print a place to select which role assignments to back up.
339 if (empty($to) and $backupuserinfo) {
340 //Line
341 echo "<tr><td colspan=\"4\"><hr /></td></tr>\n";
343 echo "<tr>";
344 echo "<td align=\"right\" valign=\"top\" colspan=\"2\"><b>";
345 echo get_string("backuproleassignments");
346 echo "</b></td><td colspan=\"2\">";
347 $roles = get_records('role', '', '', 'sortorder');
348 foreach ($roles as $role) {
349 print_checkbox('backupassignments_' . $role->shortname, 1, true, strip_tags(format_string($role->name, true)));
350 echo "<br />";
352 echo "<a href=\"#\" onclick=\"selectItemInCheckboxByName('form1', 'backupassignments_', true); return false;\">". get_string("all")."</a>/";
353 echo "<a href=\"#\" onclick=\"selectItemInCheckboxByName('form1', 'backupassignments_', false); return false;\">". get_string("none")."</a>";
354 echo "</td></tr>";
357 $backup_unique_code = time();
359 //Calculate the backup string
360 //Calculate the backup unique code to allow simultaneus backups (to define
361 //the temp-directory name and records in backup temp tables
362 $backup_name = backup_get_zipfile_name($course, $backup_unique_code);
366 </table>
367 <div style="text-align:center;margin-left:auto;margin-right:auto">
368 <?php
369 /// Print captured hidden options, now that we have closed the table
370 echo $hidden_options;
372 <input type="hidden" name="id" value="<?php p($id) ?>" />
373 <input type="hidden" name="to" value="<?php p($to) ?>" />
374 <input type="hidden" name="backup_unique_code" value="<?php p($backup_unique_code); ?>" />
375 <input type="hidden" name="backup_name" value="<?php p($backup_name); ?>" />
376 <input type="hidden" name="launch" value="check" />
377 <input type="submit" value="<?php print_string("continue") ?>" />
378 <input type="submit" name="cancel" value="<?php print_string("cancel") ?>" />
379 </div>
380 </form>