info; $course_header = $SESSION->course_header; $restore = $SESSION->restore; } //Check login require_login(); //Check admin 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 module //and include them if ($allmods = get_records("modules") ) { foreach ($allmods as $mod) { $modname = $mod->name; $modfile = "$mods_home/$modname/restorelib.php"; //If file exists and we have selected to restore that type of module if ((file_exists($modfile)) and ($restore->mods[$modname]->restore)) { include_once($modfile); } } } //Start the main table echo ""; echo ""; echo "
"; //Start the main ul echo "
    "; //Init status $status = true; //Localtion of the xml file $xml_file = $CFG->dataroot."/temp/backup/".$restore->backup_unique_code."/moodle.xml"; //If we've selected to restore into new course //create it (course) //Saving conversion id variables into backup_tables if ($restore->restoreto ==1) { echo "
  • Creating new course"; $status = restore_create_new_course($restore,&$course_header); //Print course fullname and shortname and category if ($status) { echo "
      "; echo "
    • ".$course_header->course_fullname." (".$course_header->course_shortname.")"; echo "
    • ".get_string("category").": ".$course_header->category->name; echo "
    "; //Put the destination course_id $restore->course_id = $course_header->course_id; } } else { $course = get_record("course","id",$restore->course_id); if ($course) { echo "
  • Using existing course"; echo "
      "; echo "
    • From: ".$course_header->course_fullname." (".$course_header->course_shortname.")"; echo "
    • To: ".$course->fullname." (".$course->shortname.")"; echo "
    "; } } //Now create the course_sections and their associated course_modules if ($status) { if ($restore->restoreto == 1) { echo "
  • Creating sections"; $status = restore_create_sections($restore,$xml_file); } else if ($restore->restoreto == 0) { echo "
  • Checking sections"; $status = restore_create_sections($restore,$xml_file); } else { $status = false; } } //Now create users as needed if ($status and ($restore->users == 0 or $restore->users == 1)) { echo "
  • Creating users
    "; $status = restore_create_users($restore,$xml_file); //Now print info about the work done if ($status) { $recs = get_records_sql("select old_id, new_id from {$CFG->prefix}backup_ids where backup_code = '$restore->backup_unique_code' and table_name = 'user'"); //We've records if ($recs) { $new_count = 0; $exists_count = 0; $student_count = 0; $teacher_count = 0; $coursecreator_count = 0; $admin_count = 0; $other_count = 0; $counter = 0; //Iterate, filling counters foreach ($recs as $rec) { //Get full record, using backup_getids $record = backup_getid($restore->backup_unique_code,"user",$rec->old_id); if (strpos($record->info,"new") !== false) { $new_count++; } if (strpos($record->info,"exists") !== false) { $exists_count++; } if (strpos($record->info,"student")) { $student_count++; } else if (strpos($record->info,"teacher")) { $teacher_count++; } else if (strpos($record->info,"admin")) { $admin_count++; } else if (strpos($record->info,"coursecreator")) { $coursecreator_count++; } else if ($record->info == "new" or $record->info == "exists") { $other_count++; } //Do some output $counter++; if ($counter % 10 == 0) { echo "."; if ($counter % 200 == 0) { echo "
    "; } backup_flush(300); } } //Now print information gathered echo " (new: ".$new_count.", existing: ".$exists_count.")"; echo "
      "; echo "
    • Students: ".$student_count; echo "
    • Teachers: ".$teacher_count; echo "
    • Course Creators: ".$coursecreator_count; echo "
    • Admins: ".$admin_count; echo "
    • Other: ".$other_count; echo "
    "; } else { //Something is wrong. There is no users !! $status = false; } } } //Now create categories and questions as needed (STEP1) if ($status and ($restore->mods[quiz]->restore)) { echo "
  • Creating Categories and Questions
    "; $status = restore_create_questions($restore,$xml_file); } //Now create user_files as needed if ($status and ($restore->user_files)) { echo "
  • Copying User Files
    "; $status = restore_user_files($restore); //If all is ok (and we have a counter) if ($status and ($status !== true)) { //Inform about user dirs created from backup echo "
      "; echo "
    • User Zones: ".$status; echo "
    "; } } //Now create course files as needed if ($status and ($restore->course_files)) { echo "
  • Copying Course Files
    "; $status = restore_course_files($restore); //If all is ok (and we have a counter) if ($status and ($status !== true)) { //Inform about user dirs created from backup echo "
      "; echo "
    • Main Files/Folders: ".$status; echo "
    "; } } //Now create course modules as needed if ($status) { echo "
  • Creating Course Modules"; $status = restore_create_modules($restore,$xml_file); } //Now create log entries as needed if ($status and ($restore->logs)) { echo "
  • Creating Log Entries (not implemented!!)"; } //Now, if all is OK, adjust the instance field in course_modules !! if ($status) { echo "
  • Checking Instances"; $status = restore_check_instances($restore); } //Now if all is OK, update course modinfo field !! if ($status) { echo "
  • Checking Course"; rebuild_course_cache($restore->course_id); } //Cleanup temps (files and db) if ($status) { echo "
  • Cleaning up temp data"; $status = clean_temp_data ($restore); } //End the main ul echo "
"; //End the main table echo "
"; if (!$status) { error ("An error has ocurred"); } //Print final message print_simple_box(get_string("restorefinished"),"CENTER"); print_continue($moodle_home."/course/view.php?id=".$restore->course_id); ?>