info; $course_header = $SESSION->course_header; $restore = $SESSION->restore; // Validate objects from session by checking their checksums $status = false; if (isset($SESSION->restore_checksums)) { $checksums = $SESSION->restore_checksums; if (isset($checksums['info']) && $checksums['info'] == md5(serialize($info)) && isset($checksums['course_header']) && $checksums['course_header'] == md5(serialize($course_header)) && isset($checksums['restore']) && $checksums['restore'] == md5(serialize($restore))) { $status = true; // All session checksums were or, we can rely on that to continue restoring } } if(!$status) { // Something was wrong checking objects from session, abort with error print_error('restorechecksumfailed'); } } //Add info->original_wwwroot to $restore to be able to use it in all the restore process //(mainly when decoding internal links) $restore->original_wwwroot = $info->original_wwwroot; // Copy $info->original_siteidentifier, is present, so backup_is_same_site can work. if (isset($info->original_siteidentifier)) { $restore->original_siteidentifier = $info->original_siteidentifier; } //Add info->backup_version to $restore to be able to detect versions in the restore process //(to decide when to convert wiki texts to markdown...) $restore->backup_version = $info->backup_backup_version; //Check login require_login(); //Check admin if (!empty($id)) { if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $id))) { if (empty($to)) { error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } else { if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_COURSE, $to)) && !has_capability('moodle/site:import', get_context_instance(CONTEXT_COURSE, $to))) { error("You need to be a teacher or admin user to use this page.", "$CFG->wwwroot/login/index.php"); } } } } else { if (!has_capability('moodle/site:restore', get_context_instance(CONTEXT_SYSTEM))) { 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!"); } $errorstr = ''; $status = restore_execute($restore,$info,$course_header,$errorstr); if (!$status) { error ("An error has occurred and the restore could not be completed!"); } if (empty($restore->importing)) { //Print final message print_simple_box(get_string("restorefinished"),"center"); } else { print_simple_box(get_string("importdatafinished"),"center"); $file = $CFG->dataroot . '/' . $SESSION->import_preferences->backup_course . '/backupdata/' . $SESSION->import_preferences->backup_name; if (is_readable($file)) { unlink($file); } else { error_log("import course data: couldn't unlink $file"); } unset($SESSION->restore); } print_continue("$CFG->wwwroot/course/view.php?id=".$restore->course_id); ?>