mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 05:58:34 +01:00
a89fcd7a2c
lacking backup/restore permission at system level. Merged from 19_STABLE
380 lines
17 KiB
HTML
380 lines
17 KiB
HTML
<?php
|
|
//This page prints the backup form to select everything
|
|
global $DB;
|
|
|
|
//Check login
|
|
require_login();
|
|
|
|
$loginurl = get_login_url();
|
|
|
|
//Init backupuserinfo
|
|
$backupuserinfo = false;
|
|
|
|
if (!empty($course->id)) {
|
|
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
|
if (empty($to)) {
|
|
print_error("cannotuseadminadminorteacher", '', $loginurl);
|
|
} else {
|
|
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_COURSE, $to))) {
|
|
print_error("cannotuseadminadminorteacher", '', $loginurl);
|
|
}
|
|
}
|
|
}
|
|
$backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_COURSE, $course->id));
|
|
} else {
|
|
if (!has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
|
|
print_error("cannotuseadmin", '', $loginurl);
|
|
}
|
|
$backupuserinfo = has_capability('moodle/backup:userinfo', get_context_instance(CONTEXT_SYSTEM));
|
|
}
|
|
|
|
//Check site
|
|
$site = get_site();
|
|
|
|
//Checks for the required files/functions to backup every mod
|
|
//And check if there is data about it
|
|
$count = 0;
|
|
if ($allmods = $DB->get_records('modules', array('visible'=>1)) ) {
|
|
foreach ($allmods as $mod) {
|
|
$modname = $mod->name;
|
|
$modfile = "$CFG->dirroot/mod/$modname/backuplib.php";
|
|
$modbackup = $modname."_backup_mods";
|
|
$modbackupone = $modname.'_backup_one_mod';
|
|
$modcheckbackup = $modname."_check_backup_mods";
|
|
if (file_exists($modfile)) {
|
|
include_once($modfile);
|
|
if (function_exists($modbackup) and function_exists($modcheckbackup)) {
|
|
$var = "exists_".$modname;
|
|
$$var = true;
|
|
$count++;
|
|
// check that there are instances and we can back them up individually
|
|
if ($DB->count_records('course_modules',array('course'=>$course->id,'module'=>$mod->id)) && function_exists($modbackupone)) {
|
|
$var = 'exists_one_'.$modname;
|
|
$$var = true;
|
|
}
|
|
}
|
|
}
|
|
//Check data
|
|
//Check module info
|
|
$var = "backup_".$modname;
|
|
$$var = optional_param( $var,1, PARAM_CLEAN);
|
|
//Check include user info
|
|
$var = "backup_user_info_".$modname;
|
|
$$var = optional_param( $var,1, PARAM_CLEAN);
|
|
}
|
|
}
|
|
|
|
//Check other parameters
|
|
$backup_metacourse = optional_param('backup_metacourse',1, PARAM_BOOL);
|
|
$backup_users = optional_param('backup_users',1, PARAM_BOOL);
|
|
$backup_logs = optional_param('backup_logs',0, PARAM_BOOL);
|
|
$backup_user_files = optional_param('backup_user_files',1, PARAM_BOOL);
|
|
$backup_course_files = optional_param('backup_course_files',1, PARAM_BOOL);
|
|
$backup_site_files = optional_param('backup_site_files',1, PARAM_BOOL);
|
|
$backup_gradebook_history = optional_param('backup_gradebook_history', 0, PARAM_INT);
|
|
$backup_messages = optional_param('backup_messages',1, PARAM_BOOL);
|
|
$backup_blogs = optional_param('backup_blogs',1, PARAM_BOOL);
|
|
|
|
if ($count == 0) {
|
|
notice("No backupable modules are installed!");
|
|
}
|
|
|
|
?>
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
function selectItemInMenuByName(formId, menuName, selectIndex ) {
|
|
myForm = document.getElementById(formId)
|
|
for (i=0,n=myForm.elements.length;i<n;i++) {
|
|
myLen = menuName.length;
|
|
myName = myForm.elements[i].name;
|
|
myType = myForm.elements[i].type;
|
|
if (myName.substring(0,myLen) == menuName && myType == "select-one") {
|
|
myForm.elements[i].options[selectIndex].selected = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
function selectItemInRadioByName(formId, radioName, selectIndex ) {
|
|
myForm = document.getElementById(formId)
|
|
for (i=0,n=myForm.elements.length;i<n;i++) {
|
|
myLen = radioName.length;
|
|
myName = myForm.elements[i].name;
|
|
myType = myForm.elements[i].type;
|
|
if (myName.substring(0,myLen) == radioName && myType == "radio") {
|
|
myRadioGroup = myForm.elements[myName];
|
|
myRadioGroup[selectIndex].checked = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
function selectItemInCheckboxByName(formId, checkName, checked ) {
|
|
myForm = document.getElementById(formId);
|
|
for (i=0,n=myForm.elements.length;i<n;i++) {
|
|
myLen = checkName.length;
|
|
myName = myForm.elements[i].name;
|
|
myType = myForm.elements[i].type;
|
|
if (myName.substring(0,myLen) == checkName && myType == "checkbox") {
|
|
myForm.elements[i].checked = checked;
|
|
}
|
|
}
|
|
}
|
|
-->
|
|
</script>
|
|
<form id="form1" method="post" action="backup.php">
|
|
<table cellpadding="5" style="margin-left:auto;margin-right:auto;">
|
|
<?php
|
|
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
|
|
|
/// Acummulator for hidden options and proper XHTML output
|
|
$hidden_options = '';
|
|
//Now, check modules and info and show posibilities
|
|
if ($allmods = $DB->get_records('modules', array('visible'=>1)) ) {
|
|
//Print option to select/deselect everything with 1 click.
|
|
echo "<tr>";
|
|
echo "<td align=\"right\">";
|
|
echo '<b>'.get_string("include")."</b>";
|
|
echo "</td><td>";
|
|
echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', true);\">". get_string("all")."</a>/";
|
|
echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_', false);\">". get_string("none")."</a>";
|
|
echo "</td>";
|
|
if (empty($to) and $backupuserinfo) {
|
|
echo "<td align=\"right\">";
|
|
echo '<b> </b>';
|
|
echo "</td><td>";
|
|
echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', true);\">". get_string("all")."</a>/";
|
|
echo "<a href=\"javascript:void(0);\" onclick=\"selectItemInCheckboxByName('form1', 'backup_user_info_', false);\">". get_string("none")."</a>";
|
|
echo "</td>";
|
|
} else {
|
|
echo "<td colspan=\"2\"> </td>";
|
|
}
|
|
echo "</tr>";
|
|
echo "<tr><td colspan=\"4\"><hr /></td></tr>";
|
|
$currentrow = 0;
|
|
foreach ($allmods as $mod) {
|
|
$modname = $mod->name;
|
|
$modbackup = $modname."_backup_mods";
|
|
//If exists the lib & function
|
|
$var = 'exists_'.$modname;
|
|
$exvar = 'exists_one_'.$modname;
|
|
if (!empty($$var) and !empty($$exvar)) {
|
|
//Print the full tr
|
|
echo "<tr class=\"r".$currentrow."\">";
|
|
echo " <td align=\"right\"> ";
|
|
echo "</td><td>\n";
|
|
$backup_options[0] = get_string("no");
|
|
$backup_options[1] = get_string("yes");
|
|
$var = "backup_".$modname;
|
|
//Print the checkbox
|
|
print_checkbox($var, $$var, $$var, get_string("modulenameplural",$modname),'','selectItemInCheckboxByName(\'form1\',\'backup_'.$modname.'\',this.checked)');
|
|
echo "</td><td align=\"right\"> ";
|
|
echo "</td><td>";
|
|
$var = "backup_user_info_".$modname;
|
|
if (empty($to) and $backupuserinfo) {
|
|
$backup_user_options[0] = get_string("withoutuserdata");
|
|
$backup_user_options[1] = get_string("withuserdata");
|
|
print_checkbox($var, $$var, $$var, get_string("userdata"),'','selectItemInCheckboxByName(\'form1\',\'backup_user_info_'.$modname.'\',this.checked)');
|
|
} else {
|
|
echo '<input type="hidden" name="'.$var.'" value="0" />';
|
|
}
|
|
echo "</td></tr>\n";
|
|
echo '<tr><td></td><td colspan="3"><table class="backup-form-instances">';
|
|
$instances = get_all_instances_in_course($modname, $course, NULL, true);
|
|
$var = $exvar;
|
|
foreach ($instances as $instance) {
|
|
echo '<tr><td>';
|
|
$var = 'backup_'.$modname.'_instance_'.$instance->id;
|
|
$$var = optional_param($var,1, PARAM_CLEAN);
|
|
print_checkbox($var,$$var,$$var,$instance->name,$instance->name,'this.form.elements[\'backup_'.$modname.'\'].checked=1;');
|
|
echo '</td><td align="right"> ';
|
|
$var = 'backup_user_info_'.$modname.'_instance_'.$instance->id;
|
|
$$var = optional_param($var,1, PARAM_CLEAN);
|
|
if (empty($to) and $backupuserinfo) {
|
|
print_checkbox($var,$$var,$$var,get_string('userdata'),'','this.form.elements[\'backup_user_info_'.$modname.'\'].checked=1;');
|
|
} else {
|
|
echo '<input type="hidden" name="'.$var.'" value="0" />';
|
|
}
|
|
echo '</td></tr>';
|
|
}
|
|
echo '</table></td></tr>';
|
|
}
|
|
}
|
|
//Line
|
|
echo "<tr><td colspan=\"4\"><hr /></td></tr>\n";
|
|
|
|
if (empty($to) && !empty($course->metacourse)) {
|
|
//Now print the Metacourse tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_metacourse">'.get_string ("metacourse").'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$meta_options[0] = get_string("no");
|
|
$meta_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($meta_options, "backup_metacourse", $backup_metacourse, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_metacourse" value="0" />';
|
|
}
|
|
|
|
if (empty($to) and $backupuserinfo) {
|
|
//Now print the Users tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_users">'.get_string ("users").'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
if (has_capability('moodle/site:backup', get_context_instance(CONTEXT_SYSTEM))) {
|
|
$user_options[0] = get_string("all");
|
|
}
|
|
$user_options[1] = get_string("course");
|
|
$user_options[2] = get_string("none");
|
|
echo $OUTPUT->select(html_select::make($user_options, "backup_users", $backup_users, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_users" value="2" />';
|
|
}
|
|
|
|
if (empty($to) and $backupuserinfo) {
|
|
//Now print the Logs tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_logs">'.get_string ("logs").'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$log_options[0] = get_string("no");
|
|
$log_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($log_options, "backup_logs", $backup_logs, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_logs" value="0" />';
|
|
}
|
|
|
|
if (empty($to) and $backupuserinfo) {
|
|
//Now print the User Files tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_user_files">'.get_string ("userfiles").'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$user_file_options[0] = get_string("no");
|
|
$user_file_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($user_file_options, "backup_user_files", $backup_user_files, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_user_files" value="0" />';
|
|
}
|
|
|
|
//Now print the Course Files tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_course_files">'.get_string ("coursefiles").'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$course_file_options[0] = get_string("no");
|
|
$course_file_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($course_file_options, "backup_course_files", $backup_course_files, false));
|
|
echo "</td></tr>";
|
|
|
|
|
|
if ($course->id != SITEID){
|
|
//Now print the site Files tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_site_files">'.get_string ("sitefilesused").'</label>';
|
|
echo $OUTPUT->help_icon(moodle_help_icon::make('sitefilesused', get_string('sitefilesused')));
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$course_file_options[0] = get_string("no");
|
|
$course_file_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($course_file_options, "backup_site_files", $backup_site_files, false));
|
|
echo "</td></tr>";
|
|
}
|
|
|
|
// do you want grade histories to be backed up?
|
|
if (empty($to) and $backupuserinfo and empty($CFG->disablegradehistory)) {
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_gradebook_history">'.get_string ('gradebookhistories', 'grades').'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$gradebook_history_options[0] = get_string("no");
|
|
$gradebook_history_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($gradebook_history_options, "backup_gradebook_history", $backup_gradebook_history, false));
|
|
echo "</td></tr>";
|
|
} else {
|
|
$hidden_options .= '<input type="hidden" name="backup_gradebook_history" value="0" />';
|
|
}
|
|
|
|
if (empty($to) and $backupuserinfo and $course->id == SITEID) {
|
|
//If we are in a SITEID backup print the Messages tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo '<label for="menubackup_messages">'.get_string ('messages', 'message').'</label>';
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$mess_options[0] = get_string("no");
|
|
$mess_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($mess_options, "backup_messages", $backup_messages, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_messages" value="0" />';
|
|
}
|
|
|
|
if (empty($to) and $backupuserinfo and $course->id == SITEID and !empty($CFG->bloglevel)) {
|
|
//If we are in a SITEID backup and blogs are enabled print the Blogs tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" colspan=\"2\"><b>";
|
|
echo get_string ('blogs','blog').":";
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$blog_options[0] = get_string("no");
|
|
$blog_options[1] = get_string("yes");
|
|
echo $OUTPUT->select(html_select::make($blog_options, "backup_blogs", $backup_blogs, false));
|
|
echo "</td></tr>";
|
|
}
|
|
else {
|
|
$hidden_options .= '<input type="hidden" name="backup_blogs" value="0" />';
|
|
}
|
|
}
|
|
|
|
//Now print a place to select which role assignments to back up.
|
|
if (empty($to) and $backupuserinfo) {
|
|
//Line
|
|
echo "<tr><td colspan=\"4\"><hr /></td></tr>\n";
|
|
|
|
echo "<tr>";
|
|
echo "<td align=\"right\" valign=\"top\" colspan=\"2\"><b>";
|
|
echo get_string("backuproleassignments");
|
|
echo "</b></td><td colspan=\"2\">";
|
|
$roles = get_all_roles();
|
|
foreach ($roles as $role) {
|
|
print_checkbox('backupassignments_' . $role->shortname, 1, true, strip_tags(format_string($role->name, true)));
|
|
echo "<br />";
|
|
}
|
|
echo "<a href=\"#\" onclick=\"selectItemInCheckboxByName('form1', 'backupassignments_', true); return false;\">". get_string("all")."</a>/";
|
|
echo "<a href=\"#\" onclick=\"selectItemInCheckboxByName('form1', 'backupassignments_', false); return false;\">". get_string("none")."</a>";
|
|
echo "</td></tr>";
|
|
}
|
|
|
|
$backup_unique_code = time();
|
|
|
|
//Calculate the backup string
|
|
//Calculate the backup unique code to allow simultaneus backups (to define
|
|
//the temp-directory name and records in backup temp tables
|
|
$backup_name = backup_get_zipfile_name($course, $backup_unique_code);
|
|
|
|
|
|
?>
|
|
</table>
|
|
<div style="text-align:center;margin-left:auto;margin-right:auto">
|
|
<?php
|
|
/// Print captured hidden options, now that we have closed the table
|
|
echo $hidden_options;
|
|
?>
|
|
<input type="hidden" name="id" value="<?php p($id) ?>" />
|
|
<input type="hidden" name="to" value="<?php p($to) ?>" />
|
|
<input type="hidden" name="backup_unique_code" value="<?php p($backup_unique_code); ?>" />
|
|
<input type="hidden" name="backup_name" value="<?php p($backup_name); ?>" />
|
|
<input type="hidden" name="launch" value="check" />
|
|
<input type="submit" value="<?php print_string("continue") ?>" />
|
|
<input type="submit" name="cancel" value="<?php print_string("cancel") ?>" />
|
|
</div>
|
|
</form>
|