id) (UL, pk->id, fk->feedback,completed) // | | // | | // | | // feedback_template feedback_completed // (CL,pk->id) (UL, pk->id, fk->feedback) // | | // | | // | | // feedback_item---------------------------------feedback_value // (ML,pk->id, fk->feedback, fk->template) (UL, pk->id, fk->item, fk->completed) // // Meaning: pk->primary key field of the table // fk->foreign key to link with parent // CL->course level info // ML->modul level info // UL->userid level info // message->text of each feedback_posting // //----------------------------------------------------------- define('FEEDBACK_MULTICHOICERESTORE_TYPE_SEP', '>>>>>'); function feedback_restore_mods($mod,$restore) { global $CFG, $DB; // $allValues = array(); // $allTrackings = array(); $status = true; $restore_userdata = restore_userdata_selected($restore,'feedback',$mod->id); //Get record from backup_ids $data = backup_getid($restore->backup_unique_code,$mod->modtype,$mod->id); if ($data) { //Now get completed xmlized object $info = $data->info; //check of older backupversion of feedback $version = intval(backup_todb($info['MOD']['#']['VERSION']['0']['#'])); //Now, build the feedback record structure $feedback->course = $restore->course_id; $feedback->name = backup_todb($info['MOD']['#']['NAME']['0']['#']); $feedback->intro = backup_todb($info['MOD']['#']['SUMMARY']['0']['#']); $feedback->anonymous = backup_todb($info['MOD']['#']['ANONYMOUS']['0']['#']); $feedback->email_notification = backup_todb($info['MOD']['#']['EMAILNOTIFICATION']['0']['#']); $feedback->multiple_submit = backup_todb($info['MOD']['#']['MULTIPLESUBMIT']['0']['#']); $feedback->autonumbering = backup_todb($info['MOD']['#']['AUTONUMBERING']['0']['#']); $feedback->page_after_submit = backup_todb($info['MOD']['#']['PAGEAFTERSUB']['0']['#']); $feedback->site_after_submit = backup_todb($info['MOD']['#']['SITEAFTERSUB']['0']['#']); $feedback->publish_stats = backup_todb($info['MOD']['#']['PUBLISHSTATS']['0']['#']); $feedback->timeopen = backup_todb($info['MOD']['#']['TIMEOPEN']['0']['#']); $feedback->timeclose = backup_todb($info['MOD']['#']['TIMECLOSE']['0']['#']); $feedback->timemodified = backup_todb($info['MOD']['#']['TIMEMODIFIED']['0']['#']); //The structure is equal to the db, so insert the feedback $newid = $DB->insert_record ("feedback",$feedback); //create events // the open-event if($feedback->timeopen > 0) { $event = NULL; $event->name = get_string('start', 'feedback').' '.$feedback->name; $event->description = $feedback->intro; $event->courseid = $feedback->course; $event->groupid = 0; $event->userid = 0; $event->modulename = 'feedback'; $event->instance = $newid; $event->eventtype = 'open'; $event->timestart = $feedback->timeopen; $event->visible = instance_is_visible('feedback', $feedback); if($feedback->timeclose > 0) { $event->timeduration = ($feedback->timeclose - $feedback->timeopen); } else { $event->timeduration = 0; } add_event($event); } // the close-event if($feedback->timeclose > 0) { $event = NULL; $event->name = get_string('stop', 'feedback').' '.$feedback->name; $event->description = $feedback->intro; $event->courseid = $feedback->course; $event->groupid = 0; $event->userid = 0; $event->modulename = 'feedback'; $event->instance = $newid; $event->eventtype = 'close'; $event->timestart = $feedback->timeclose; $event->visible = instance_is_visible('feedback', $feedback); $event->timeduration = 0; add_event($event); } //Do some output echo ""; } else { $status = false; } return $status; } //This function returns a log record with all the necessay transformations //done. It's used by restore_log_module() to restore modules log. function feedback_restore_logs($restore,$log) { $status = false; //Depending of the action, we recode different things switch ($log->action) { case "add": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "view.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "update": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "view.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "view": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "view.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "add entry": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "view.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "update entry": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "view.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "view responses": if ($log->cmid) { //Get the new_id of the module (to recode the info field) $mod = backup_getid($restore->backup_unique_code,$log->module,$log->info); if ($mod) { $log->url = "report.php?id=".$log->cmid; $log->info = $mod->new_id; $status = true; } } break; case "update feedback": if ($log->cmid) { $log->url = "report.php?id=".$log->cmid; $status = true; } break; case "view all": $log->url = "index.php?id=".$log->course; $status = true; break; default: if (!defined('RESTORE_SILENTLY')) { echo "action (".$log->module."-".$log->action.") unknown. Not restored
"; //Debug } break; } if ($status) { $status = $log; } return $status; }