mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00

Allow restore into new course (only admins), restore into existing course deleting old and restore into existing course adding to old Teachers are limited to "current course" while admins ca select any course. :-)
244 lines
8.8 KiB
HTML
244 lines
8.8 KiB
HTML
<?PHP //$Id$
|
|
//This page prints the restore form to select everything yo want
|
|
//to restore. Form is dinamically buid, depending of "info" object
|
|
//that contains the backup contents and depending of every mod
|
|
//capabilities.
|
|
|
|
//Get objects from session
|
|
$info = $SESSION->info;
|
|
$course_header = $SESSION->course_header;
|
|
|
|
//Check that we have all we need
|
|
//backup_unique_code
|
|
require_variable($backup_unique_code);
|
|
//file
|
|
require_variable($file);
|
|
//info
|
|
require_variable($info);
|
|
//course_header
|
|
require_variable($course_header);
|
|
|
|
//Check login
|
|
require_login();
|
|
|
|
//Check admin
|
|
if (!empty($id)) {
|
|
if (!isteacher($id)) {
|
|
error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php");
|
|
}
|
|
} else {
|
|
if (!isadmin()) {
|
|
error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
|
|
}
|
|
}
|
|
|
|
//Check site
|
|
if (!$site = get_site()) {
|
|
error("Site not found!");
|
|
}
|
|
|
|
//Checks for the required files/functions to restore every mod
|
|
$count = 0;
|
|
if ($allmods = get_records("modules") ) {
|
|
foreach ($allmods as $mod) {
|
|
$modname = $mod->name;
|
|
$modfile = "$CFG->dirroot/mod/$modname/restorelib.php";
|
|
$modrestore = $modname."_restore_mods";
|
|
if (file_exists($modfile)) {
|
|
include_once($modfile);
|
|
if (function_exists($modrestore)) {
|
|
$var = "exists_".$modname;
|
|
$$var = true;
|
|
$count++;
|
|
}
|
|
}
|
|
//Check data
|
|
//Check module info
|
|
$var = "restore_".$modname;
|
|
if (!isset($$var)) {
|
|
$$var = 1;
|
|
}
|
|
//Check include user info
|
|
$var = "restore_user_info_".$modname;
|
|
if (!isset($$var)) {
|
|
$$var = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Check other parameters
|
|
if (!isset($restore_users)) {
|
|
$restore_users = 1;
|
|
}
|
|
|
|
if (!isset($restore_logs)) {
|
|
$restore_logs = 1;
|
|
}
|
|
|
|
if (!isset($restore_user_files)) {
|
|
$restore_user_files = 1;
|
|
}
|
|
|
|
if (!isset($restore_course_files)) {
|
|
$restore_course_files = 1;
|
|
}
|
|
|
|
if (!isset($restore_restoreto)) {
|
|
if (isteacher($id) and !isadmin()) {
|
|
$restore_restoreto = 1;
|
|
}
|
|
if (isadmin()) {
|
|
$restore_restoreto = 2;
|
|
}
|
|
}
|
|
|
|
if ($count == 0) {
|
|
notice("No restorable modules are installed!");
|
|
}
|
|
|
|
?>
|
|
|
|
<form name="form" method="post" <?=$onsubmit ?> action="<?=$ME ?>">
|
|
<table cellpadding=5>
|
|
<?
|
|
|
|
//First, course destination
|
|
//Print the full tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><b>";
|
|
echo get_string("restoreto").":</b>";
|
|
echo "</td><td>";
|
|
if (isteacher($id) and !isadmin()) {
|
|
$restore_restoreto_options[0] = get_string("currentcoursedeleting");
|
|
$restore_restoreto_options[1] = get_string("currentcourseadding");
|
|
}
|
|
if (isadmin()) {
|
|
$restore_restoreto_options[0] = get_string("existingcoursedeleting");
|
|
$restore_restoreto_options[1] = get_string("existingcourseadding");
|
|
$restore_restoreto_options[2] = get_string("newcourse");
|
|
}
|
|
choose_from_menu($restore_restoreto_options, "restore_restoreto", $restore_restoreto, "");
|
|
echo "</td></tr>";
|
|
//Line
|
|
echo "<tr><td colspan=\"2\"><hr noshade size=\"1\"></td></tr>";
|
|
//Now, check modules and info and show posibilities
|
|
if ($allmods = get_records("modules") ) {
|
|
foreach ($allmods as $mod) {
|
|
$modname = $mod->name;
|
|
$modrestore = $modname."_restore_mods";
|
|
//If exists the lib & function
|
|
$exist = "exists_".$modname;
|
|
$restore_var = "restore_".$modname;
|
|
$user_info_var = "restore_user_info_".$modname;
|
|
if ($$exist) {
|
|
//Now check that we have that module info in the backup file
|
|
if ($info->mods[$modname]->backup == "true") {
|
|
//Print the full tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><B>";
|
|
echo get_string("include")." ". get_string("modulenameplural",$modname).":";
|
|
echo "</td><td>";
|
|
$restore_options[0] = get_string("no");
|
|
$restore_options[1] = get_string("yes");
|
|
choose_from_menu($restore_options, $restore_var, $$restore_var, "");
|
|
//If backup contains user data, then show menu, else fix it to
|
|
//without user data
|
|
if ($info->mods[$modname]->userinfo == "true") {
|
|
$restore_user_options[0] = get_string("withoutuserdata");
|
|
$restore_user_options[1] = get_string("withuserdata");
|
|
choose_from_menu($restore_user_options, $user_info_var, $$user_info_var, "");
|
|
} else {
|
|
//Module haven't userdata
|
|
echo get_string("withoutuserdata");
|
|
echo "<input type=\"hidden\" name=\"$user_info_var\" value=\"0\">";
|
|
}
|
|
echo "</td></tr>";
|
|
} else {
|
|
//Module isn't restorable
|
|
echo "<input type=\"hidden\" name=\"$restore_var\" value=\"0\">";
|
|
echo "<input type=\"hidden\" name=\"$user_info_var\" value=\"0\">";
|
|
}
|
|
} else {
|
|
//Module isn't restorable
|
|
echo "<input type=\"hidden\" name=\"$restore_var\" value=\"0\">";
|
|
echo "<input type=\"hidden\" name=\"$user_info_var\" value=\"0\">";
|
|
}
|
|
}
|
|
//Line
|
|
echo "<tr><td colspan=\"2\"><hr noshade size=\"1\"></td></tr>";
|
|
|
|
//Now print the Users tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><B>";
|
|
echo get_string("users").":";
|
|
echo "</td><td>";
|
|
//If all users are in the backup file
|
|
if ($info->backup_users == "all") {
|
|
$user_options[0] = get_string("all");
|
|
}
|
|
$user_options[1] = get_string("course");
|
|
$user_options[2] = get_string("none");
|
|
//$user_options[2] = get_string("needed");-->NOT IMPLEMENTED
|
|
choose_from_menu($user_options, "restore_users", $restore_users, "");
|
|
echo "</td></tr>";
|
|
|
|
//Now print the Logs tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><B>";
|
|
echo get_string("logs").":";
|
|
echo "</td><td>";
|
|
//If logs are in the backup file, show menu, else fixed to no
|
|
if ($info->backup_logs == "true") {
|
|
$log_options[0] = get_string("no");
|
|
$log_options[1] = get_string("yes");
|
|
choose_from_menu($log_options, "restore_logs", $restore_logs, "");
|
|
} else {
|
|
echo get_string("no");
|
|
echo "<input type=\"hidden\" name=\"restore_logs\" value=\"0\">";
|
|
}
|
|
echo "</td></tr>";
|
|
|
|
//Now print the User Files tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><B>";
|
|
echo get_string ("userfiles").":";
|
|
echo "</td><td>";
|
|
//If user files are in the backup file, show menu, else fixed to no
|
|
if ($info->backup_user_files == "true") {
|
|
$user_file_options[0] = get_string("no");
|
|
$user_file_options[1] = get_string("yes");
|
|
choose_from_menu($user_file_options, "restore_user_files", $restore_user_files, "");
|
|
} else {
|
|
echo get_string("no");
|
|
echo "<input type=\"hidden\" name=\"restore_user_files\" value=\"0\">";
|
|
}
|
|
echo "</td></tr>";
|
|
|
|
//Now print the Course Files tr
|
|
echo "<tr>";
|
|
echo "<td align=\"right\"><P><B>";
|
|
echo get_string ("coursefiles").":";
|
|
echo "</td><td>";
|
|
//If course files are in the backup file, show menu, else fixed to no
|
|
if ($info->backup_course_files == "true") {
|
|
$course_file_options[0] = get_string("no");
|
|
$course_file_options[1] = get_string("yes");
|
|
choose_from_menu($course_file_options, "restore_course_files", $restore_course_files, "");
|
|
} else {
|
|
echo get_string("no");
|
|
echo "<input type=\"hidden\" name=\"restore_course_files\" value=\"0\">";
|
|
}
|
|
echo "</td></tr>";
|
|
echo "<input type=\"hidden\" name=\"backup_unique_code\" value=\"$backup_unique_code\">";
|
|
echo "<input type=\"hidden\" name=\"file\" value=\"$file\">";
|
|
}
|
|
?>
|
|
</table>
|
|
<BR>
|
|
<CENTER>
|
|
<input type="hidden" name=id value="<? p($id) ?>">
|
|
<input type="hidden" name=launch value="check">
|
|
<input type="submit" value="<? print_string("continue") ?>">
|
|
<input type="submit" name=cancel value="<? print_string("cancel") ?>">
|
|
</CENTER>
|
|
</FORM>
|