Teacher restoring and admin restoring finished.

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. :-)
This commit is contained in:
stronk7
2003-08-03 00:42:41 +00:00
parent 35ea159433
commit be2a6fc6ca
3 changed files with 91 additions and 16 deletions
+42 -8
View File
@@ -98,8 +98,14 @@
require_login();
//Check admin
if (!isadmin()) {
error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
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
@@ -108,16 +114,43 @@
}
//Depending the selected restoreto:
// 0-Existing course: Select the destination course and launch the check again.
// 1-New course: Create the restore object (checking everything) and launch the execute.
// If user is a teacher (and nor admin):
// 0-Current course, deleting: Put $restore->course_id and $restore->deleting (true), create the restore object
// 1-Current course, adding: Put $restore->course_id and $restore->deleting (false), create the restore object
// If the uses is an admin:
// 0-Existing course, deleting: Select the destination course and launch the check again, then
// put $restore->course_id and $restore->deleting (true), create the restore object.
// 1-Existing course, adding: Select the destination course and launch the check again, then
// put $restore->course_id and $restore->deleting (false), create the restore object.
// 2-New course: Create the restore object and launch the execute.
//Select course
if (($restore->restoreto == 0) and ($restore->course_id == 0)) {
//If the user is a teacher and not an admin
if (isteacher($id) and !isadmin()) {
$restore->course_id = $id;
if ($restore->restoreto == 0) {
$restore->deleting = true;
} else {
$restore->deleting = false;
}
}
//If the user is an admin
if (isadmin()) {
//Set restore->deleting as needed
if ($restore->restoreto == 0) {
$restore->deleting = true;
} else {
$restore->deleting = false;
}
}
//Now, select the course if needed
if (($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id == 0) and (isadmin())) {
if ($courses = get_courses()) {
print_heading(get_string("choosecourse"));
print_simple_box_start("CENTER");
foreach ($courses as $course) {
echo "<A HREF=\"restore.php?course_id=$course->id&launch=check&file=$file\">$course->fullname ($course->shortname)</A><BR>";
echo "<A HREF=\"restore.php?course_id=$course->id&launch=check&id=$id&file=$file\">$course->fullname ($course->shortname)</A><BR>";
}
print_simple_box_end();
} else {
@@ -125,7 +158,7 @@
print_continue("$CFG->wwwroot/$CFG->admin/index.php");
}
//Checks everything and execute restore
} else if ((($restore->restoreto == 0) and ($restore->course_id != 0)) or ($restore->restoreto == 1)) {
} else if ((($restore->restoreto == 0 or $restore->restoreto == 1) and ($restore->course_id != 0)) or ($restore->restoreto == 2)) {
$show_continue_button = true;
//Check if we've selected any mod's user info and restore->users
//is set to none. Change it to course and inform.
@@ -151,6 +184,7 @@
echo "<CENTER>";
$hidden["launch"] = "execute";
$hidden["file"] = $file;
$hidden["id"] = $id;
print_single_button("restore.php", $hidden, get_string("restorecoursenow"),"post");
echo "</CENTER>";
} else {
+34 -5
View File
@@ -14,8 +14,14 @@
require_login();
//Check admin
if (!isadmin()) {
error("You need to be an admin user to use this page.", "$CFG->wwwroot/login/index.php");
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
@@ -52,7 +58,7 @@
//If we've selected to restore into new course
//create it (course)
//Saving conversion id variables into backup_tables
if ($restore->restoreto ==1) {
if ($restore->restoreto == 2) {
echo "<li>".get_string("creatingnewcourse");
$status = restore_create_new_course($restore,$course_header);
//Print course fullname and shortname and category
@@ -71,18 +77,41 @@
echo "<ul>";
echo "<li>".get_string("from").": ".$course_header->course_fullname." (".$course_header->course_shortname.")";
echo "<li>".get_string("to").": ".$course->fullname." (".$course->shortname.")";
if (($restore->deleting)) {
echo "<li>".get_string("deletingexistingcoursedata");
} else {
echo "<li>".get_string("addingdatatoexisting");
}
echo "</ul>";
//If we have selected to restore deleting, we do it now.
if ($restore->deleting) {
echo "<li>".get_string("deletingcoursedata");
$status = remove_course_contents($restore->course_id,false) and
delete_dir_contents($CFG->dataroot."/".$restore->course_id,"backupdata");
if ($status) {
//Now , this situation is equivalent to the "restore to new course" one (we
//have a course record and nothing more), so define it as "to new course"
$restore->restoreto = 2;
} else {
notify("An error occurred while deleting some of the course contents.");
}
}
} else {
$status = false;
}
}
//Now create the course_sections and their associated course_modules
if ($status) {
if ($restore->restoreto == 1) {
//Into new course
if ($restore->restoreto == 2) {
echo "<li>".get_string("creatingsections");
$status = restore_create_sections($restore,$xml_file);
} else if ($restore->restoreto == 0) {
//Into existing course
} else if ($restore->restoreto == 0 or $restore->restoreto == 1) {
echo "<li>".get_string("checkingsections");
$status = restore_create_sections($restore,$xml_file);
//Error
} else {
$status = false;
}
+15 -3
View File
@@ -84,7 +84,12 @@
}
if (!isset($restore_restoreto)) {
$restore_restoreto = 1;
if (isteacher($id) and !isadmin()) {
$restore_restoreto = 1;
}
if (isadmin()) {
$restore_restoreto = 2;
}
}
if ($count == 0) {
@@ -103,8 +108,15 @@
echo "<td align=\"right\"><P><b>";
echo get_string("restoreto").":</b>";
echo "</td><td>";
$restore_restoreto_options[0] = get_string("existingcourse");
$restore_restoreto_options[1] = get_string("newcourse");
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