Moved validation functions to enrol_authorize_form class.
[moodle.git] / backup / backup_form.html
CommitLineData
7ef0797d 1<?php //$Id$
a615cc7b 2 //This page prints the backup form to select everything
3
c563a9a0 4 //Check login
5 require_login();
6
bd38123e 7 if (!empty($course->id)) {
ec7a8b79 8 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
873bf875 9 if (empty($to)) {
10 error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php");
11 } else {
ec7a8b79 12 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
873bf875 13 error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php");
14 }
15 }
bd38123e 16 }
17 } else {
ec7a8b79 18 if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
bd38123e 19 error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
20 }
c563a9a0 21 }
22
23 //Check site
24 if (!$site = get_site()) {
25 error("Site not found!");
26 }
27
834e58a9 28 //Checks for the required files/functions to backup every mod
a615cc7b 29 //And check if there is data about it
30 $count = 0;
31 if ($allmods = get_records("modules") ) {
32 foreach ($allmods as $mod) {
33 $modname = $mod->name;
9c1ae5ae 34 $modfile = "$CFG->dirroot/mod/$modname/backuplib.php";
a615cc7b 35 $modbackup = $modname."_backup_mods";
1ecea976 36 $modbackupone = $modname.'_backup_one_mod';
a615cc7b 37 $modcheckbackup = $modname."_check_backup_mods";
38 if (file_exists($modfile)) {
39 include_once($modfile);
40 if (function_exists($modbackup) and function_exists($modcheckbackup)) {
41 $var = "exists_".$modname;
42 $$var = true;
43 $count++;
1ecea976 44 // check that there are instances and we can back them up individually
45 if (count_records('course_modules','course',$course->id,'module',$mod->id) && function_exists($modbackupone)) {
46 $var = 'exists_one_'.$modname;
47 $$var = true;
48 }
a615cc7b 49 }
50 }
51 //Check data
52 //Check module info
53 $var = "backup_".$modname;
1517803d 54 $$var = optional_param( $var,1);
a615cc7b 55 //Check include user info
56 $var = "backup_user_info_".$modname;
1517803d 57 $$var = optional_param( $var,1);
a615cc7b 58 }
59 }
60
61 //Check other parameters
1517803d 62 $backup_metacourse = optional_param('backup_metacourse',1);
63 $backup_users = optional_param('backup_users',1);
64 $backup_logs = optional_param('backup_logs',0);
65 $backup_user_files = optional_param('backup_user_files',1);
66 $backup_course_files = optional_param('backup_course_files',1);
67 $backup_messages = optional_param('backup_messages',1);
57224893 68
1517803d 69 if ($count == 0) {
70 notice("No backupable modules are installed!");
a615cc7b 71 }
72
1517803d 73?>
a615cc7b 74
f4ba7e1a 75<script type="text/javascript">
1517803d 76<!--
77function selectItemInMenuByName(formId, menuName, selectIndex ) {
78 myForm = document.getElementById(formId)
79 for (i=0,n=myForm.elements.length;i<n;i++) {
80 myLen = menuName.length;
81 myName = myForm.elements[i].name;
82 myType = myForm.elements[i].type;
83 if (myName.substring(0,myLen) == menuName && myType == "select-one") {
84 myForm.elements[i].options[selectIndex].selected = true;
85 }
a615cc7b 86 }
1517803d 87}
a615cc7b 88
1517803d 89function selectItemInRadioByName(formId, radioName, selectIndex ) {
90 myForm = document.getElementById(formId)
91 for (i=0,n=myForm.elements.length;i<n;i++) {
92 myLen = radioName.length;
93 myName = myForm.elements[i].name;
94 myType = myForm.elements[i].type;
95 if (myName.substring(0,myLen) == radioName && myType == "radio") {
96 myRadioGroup = myForm.elements[myName];
97 myRadioGroup[selectIndex].checked = true;
98 }
70641539 99 }
1517803d 100}
70641539 101
1517803d 102function selectItemInCheckboxByName(formId, checkName, checked ) {
1ecea976 103 myForm = document.getElementById(formId);
1517803d 104 for (i=0,n=myForm.elements.length;i<n;i++) {
105 myLen = checkName.length;
106 myName = myForm.elements[i].name;
107 myType = myForm.elements[i].type;
108 if (myName.substring(0,myLen) == checkName && myType == "checkbox") {
109 myForm.elements[i].checked = checked;
110 }
a615cc7b 111 }
1517803d 112}
113-->
114</script>
a615cc7b 115
b7dc2256 116<form id="form1" method="post" action="backup.php">
7ef0797d 117<table cellpadding="5">
145cb8f9 118<?php
1517803d 119 //Now, check modules and info and show posibilities
a615cc7b 120 if ($allmods = get_records("modules") ) {
1517803d 121 //Print option to select/deselect everything with 1 click.
122 echo "<tr>";
123 echo "<td align=\"right\">";
124 echo '<b>'.get_string("include").":</b>";
125 echo "</td><td>";
126 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', true);\">". get_string("all")."</a>/";
127 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', false);\">". get_string("none")."</a>";
128 echo "</td>";
129 echo "<td align=\"right\">";
130 echo '<b>&nbsp;</b>';
131 echo "</td><td>";
132 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', true);\">". get_string("all")."</a>/";
133 echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', false);\">". get_string("none")."</a>";
134 echo "</td>";
135 echo "</tr>";
136 echo "<tr><td colspan=\"4\"><hr /></td></tr>";
137 $currentrow = 0;
a615cc7b 138 foreach ($allmods as $mod) {
139 $modname = $mod->name;
140 $modbackup = $modname."_backup_mods";
141 //If exists the lib & function
142 $var = "exists_".$modname;
142a6a46 143 if (isset($$var) && $$var) {
a615cc7b 144 //Print the full tr
1517803d 145 echo "<tr class=\"r".$currentrow."\">";
146 echo " <td align=\"right\">&nbsp;";
147 echo "</td><td>\n";
a615cc7b 148 $backup_options[0] = get_string("no");
149 $backup_options[1] = get_string("yes");
150 $var = "backup_".$modname;
1517803d 151 //choose_from_menu($backup_options, $var, $$var, "");
152 //Print the checkbox
1ecea976 153 print_checkbox($var, $$var, $$var, get_string("modulenameplural",$modname),'','selectItemInCheckboxByName(\'form1\',\'backup_'.$modname.'\',this.checked)');
1517803d 154 echo "</td><td align=\"right\">&nbsp;";
155 echo "</td><td>";
1ecea976 156 $var = "backup_user_info_".$modname;
873bf875 157 if (empty($to)) {
158 $backup_user_options[0] = get_string("withoutuserdata");
159 $backup_user_options[1] = get_string("withuserdata");
1517803d 160 //choose_from_menu($backup_user_options, $var, $$var, "");
1ecea976 161 print_checkbox($var, $$var, $$var, get_string("userdata"),'','selectItemInCheckboxByName(\'form1\',\'backup_user_info_'.$modname.'\',this.checked)');
1517803d 162 } else {
873bf875 163 echo '<input type="hidden" name="'.$var.'" value="0" />';
164 }
35a4a791 165 echo "</td></tr>\n";
1ecea976 166 // if we have the backup_one_mod function, loop here.
167 $var = 'exists_one_'.$modname;
168 if (!empty($$var)) {
169 echo '<tr><td></td><td colspan="3"><table class="backup-form-instances">';
170 $instances = get_all_instances_in_course($modname,$course);
171 foreach ($instances as $instance) {
172 echo '<tr><td>';
173 $var = 'backup_'.$modname.'_instance_'.$instance->id;
174 $$var = optional_param($var,1);
175 print_checkbox($var,$$var,$$var,$instance->name,$instance->name,'this.form.elements[\'backup_'.$modname.'\'].checked=1;');
176 echo '</td><td align="right">&nbsp;';
177 $var = 'backup_user_info_'.$modname.'_instance_'.$instance->id;
178 $$var = optional_param($var,1);
179 if (empty($to)) {
180 print_checkbox($var,$$var,$$var,get_string('userdata'),'','this.form.elements[\'backup_user_info_'.$modname.'\'].checked=1;');
181 } else {
182 echo '<input type="hidden" name="'.$var.'" value="0" />';
183 }
184 echo '</td></tr>';
185 }
186 echo '</table></td></tr>';
187 }
188
a615cc7b 189 }
190 }
191 //Line
1517803d 192 echo "<tr><td colspan=\"4\"><hr /></td></tr>\n";
873bf875 193
57224893 194 if (empty($to)) {
195 //Now print the Metacourse tr
196 echo "<tr>";
1517803d 197 echo "<td align=\"right\" colspan=\"2\"><b>";
57224893 198 echo get_string ("metacourse").":";
1517803d 199 echo "</b></td><td colspan=\"2\">";
57224893 200 $meta_options[0] = get_string("no");
201 $meta_options[1] = get_string("yes");
202 choose_from_menu($meta_options, "backup_metacourse", $backup_metacourse, "");
203 echo "</td></tr>";
204 }
205 else {
206 echo '<input type="hidden" name="backup_metacourse" value="0" />';
207 }
208
873bf875 209 if (empty($to)) {
210 //Now print the Users tr
211 echo "<tr>";
1517803d 212 echo "<td align=\"right\" colspan=\"2\"><b>";
873bf875 213 echo get_string("users").":";
1517803d 214 echo "</b></td><td colspan=\"2\">";
873bf875 215 $user_options[0] = get_string("all");
216 $user_options[1] = get_string("course");
217 $user_options[2] = get_string("none");
218 choose_from_menu($user_options, "backup_users", $backup_users, "");
219 echo "</td></tr>";
220 }
221 else {
222 echo '<input type="hidden" name="backup_users" value="0" />';
223 }
224
225 if (empty($to)) {
226 //Now print the Logs tr
227 echo "<tr>";
1517803d 228 echo "<td align=\"right\" colspan=\"2\"><b>";
873bf875 229 echo get_string("logs").":";
1517803d 230 echo "</b></td><td colspan=\"2\">";
873bf875 231 $log_options[0] = get_string("no");
232 $log_options[1] = get_string("yes");
233 choose_from_menu($log_options, "backup_logs", $backup_logs, "");
234 echo "</td></tr>";
235 }
236 else {
237 echo '<input type="hidden" name="backup_logs" value="0" />';
238 }
ef9b35a0 239
873bf875 240 if (empty($to)) {
241 //Now print the User Files tr
242 echo "<tr>";
1517803d 243 echo "<td align=\"right\" colspan=\"2\"><b>";
873bf875 244 echo get_string ("userfiles").":";
1517803d 245 echo "</b></td><td colspan=\"2\">";
873bf875 246 $user_file_options[0] = get_string("no");
247 $user_file_options[1] = get_string("yes");
248 choose_from_menu($user_file_options, "backup_user_files", $backup_user_files, "");
249 echo "</td></tr>";
250 }
251 else {
252 echo '<input type="hidden" name="backup_user_files" value="0" />';
253 }
a615cc7b 254 //Now print the Course Files tr
255 echo "<tr>";
1517803d 256 echo "<td align=\"right\" colspan=\"2\"><b>";
a615cc7b 257 echo get_string ("coursefiles").":";
1517803d 258 echo "</b></td><td colspan=\"2\">";
a615cc7b 259 $course_file_options[0] = get_string("no");
260 $course_file_options[1] = get_string("yes");
261 choose_from_menu($course_file_options, "backup_course_files", $backup_course_files, "");
262 echo "</td></tr>";
70641539 263
264 if (empty($to) && $course->id == SITEID) {
265 //If we are in a SITEID backup print the Messages tr
266 echo "<tr>";
1517803d 267 echo "<td align=\"right\" colspan=\"2\"><b>";
70641539 268 echo get_string ('messages','message').":";
1517803d 269 echo "</b></td><td colspan=\"2\">";
70641539 270 $mess_options[0] = get_string("no");
271 $mess_options[1] = get_string("yes");
272 choose_from_menu($mess_options, "backup_messages", $backup_messages, "");
273 echo "</td></tr>";
274 }
275 else {
276 echo '<input type="hidden" name="backup_messages" value="0" />';
277 }
a615cc7b 278 }
a94baeaf 279
280 $backup_unique_code = time();
281
282 //Calculate the backup string
283
284 //Calculate the backup word
285 //Take off some characters in the filename !!
286 $takeoff = array(" ", ":", "/", "\\", "|");
57f1b914 287 $backup_word = str_replace($takeoff,"_",moodle_strtolower(get_string("backupfilename")));
a94baeaf 288 //If non-translated, use "backup"
289 if (substr($backup_word,0,1) == "[") {
290 $backup_word= "backup";
291 }
292
293 //Calculate the date format string
294 $backup_date_format = str_replace(" ","_",get_string("backupnameformat"));
295 //If non-translated, use "%Y%m%d-%H%M"
296 if (substr($backup_date_format,0,1) == "[") {
297 $backup_date_format = "%%Y%%m%%d-%%H%%M";
298 }
299
300 //Calculate the shortname
301 $backup_shortname = clean_filename($course->shortname);
302 if (empty($backup_shortname) or $backup_shortname == '_' ) {
303 $backup_shortname = $course->id;
304 }
305
306 //Calculate the final backup filename
307 //The backup word
308 $backup_name = $backup_word."-";
309 //The shortname
57f1b914 310 $backup_name .= moodle_strtolower($backup_shortname)."-";
a94baeaf 311 //The date format
312 $backup_name .= userdate(time(),$backup_date_format,99,false);
313 //The extension
314 $backup_name .= ".zip";
315 //And finally, clean everything
316 $backup_name = clean_filename($backup_name);
317
318 //Calculate the backup unique code to allow simultaneus backups (to define
319 //the temp-directory name and records in backup temp tables
a615cc7b 320?>
321</table>
7ef0797d 322<br />
323<center>
873bf875 324<input type="hidden" name="id" value="<?php p($id) ?>" />
325<input type="hidden" name="to" value="<?php p($to) ?>" />
a94baeaf 326<input type="hidden" name="backup_unique_code" value="<?php p($backup_unique_code); ?>" />
327<input type="hidden" name="backup_name" value="<?php p($backup_name); ?>" />
873bf875 328<input type="hidden" name="launch" value="check" />
329<input type="submit" value="<?php print_string("continue") ?>" />
330<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" />
7ef0797d 331</center>
332</form>