Permalink
Browse files

MDL-23479 backup - various fixes in feedback backup & restore + delet…

…e old code (but logs restore)
  • Loading branch information...
1 parent 5fcefc9 commit d68c337f5bafe0001921fb26599144282721efff @stronk7 stronk7 committed Aug 2, 2010
@@ -68,7 +68,7 @@ static public function encode_content_links($content) {
$content= preg_replace($search, '$@FEEDBACKANALYSISBYID*$2@$', $content);
// Link to feedback entries by moduleid
- $search="/(".$base."\/mod\/feedback\/analysis.php\?id\=)([0-9]+)/";
+ $search="/(".$base."\/mod\/feedback\/show_entries.php\?id\=)([0-9]+)/";
$content= preg_replace($search, '$@FEEDBACKSHOWENTRIESBYID*$2@$', $content);
return $content;
@@ -91,21 +91,23 @@ protected function define_structure() {
// Build the tree
+ $feedback->add_child($items);
+ $items->add_child($item);
+
$feedback->add_child($completeds);
$completeds->add_child($completed);
$completed->add_child($values);
$values->add_child($value);
- $feedback->add_child($items);
- $items->add_child($item);
-
$feedback->add_child($trackings);
$trackings->add_child($tracking);
// Define sources
$feedback->set_source_table('feedback', array('id' => backup::VAR_ACTIVITYID));
+ $item->set_source_table('feedback_item', array('feedback' => backup::VAR_PARENTID));
+
// All these source definitions only happen if we are including user info
if ($userinfo) {
$completed->set_source_sql('
@@ -114,8 +116,6 @@ protected function define_structure() {
WHERE feedback = ?',
array(backup::VAR_PARENTID));
- $item->set_source_table('feedback_item', array('feedback' => backup::VAR_PARENTID));
-
$value->set_source_table('feedback_value', array('completed' => backup::VAR_PARENTID));
$tracking->set_source_table('feedback_tracking', array('feedback' => backup::VAR_PARENTID));
@@ -55,6 +55,8 @@ static public function define_decode_contents() {
$contents = array();
$contents[] = new restore_decode_content('feedback', array('intro'), 'feedback');
+ $contents[] = new restore_decode_content('feedback_item', array('presentation'), 'feedback_item');
+ $contents[] = new restore_decode_content('feedback_value', array('value'), 'feedback_value');
return $contents;
}
@@ -66,8 +68,10 @@ static public function define_decode_contents() {
static public function define_decode_rules() {
$rules = array();
- $rules[] = new restore_decode_rule('FEEDBACKVIEWBYID', '/mod/feedback/view.php?id=$1', 'course_module');
$rules[] = new restore_decode_rule('FEEDBACKINDEX', '/mod/feedback/index.php?id=$1', 'course');
+ $rules[] = new restore_decode_rule('FEEDBACKVIEWBYID', '/mod/feedback/view.php?id=$1', 'course_module');
+ $rules[] = new restore_decode_rule('FEEDBACKANALYSISBYID', '/mod/feedback/analysis.php?id=$1', 'course_module');
+ $rules[] = new restore_decode_rule('FEEDBACKSHOWENTRIESBYID', '/mod/feedback/show_entries.php?id=$1', 'course_module');
return $rules;
@@ -40,7 +40,7 @@ protected function define_structure() {
$paths[] = new restore_path_element('feedback_item', '/activity/feedback/items/item');
if ($userinfo) {
$paths[] = new restore_path_element('feedback_completed', '/activity/feedback/completeds/completed');
- $paths[] = new restore_path_element('feedback_value', '/activity/feedback/values/value');
+ $paths[] = new restore_path_element('feedback_value', '/activity/feedback/completeds/completed/values/value');
$paths[] = new restore_path_element('feedback_tracking', '/activity/feedback/trackings/tracking');
}
@@ -73,7 +73,7 @@ protected function process_feedback_item($data) {
$data->feedback = $this->get_new_parentid('feedback');
$newitemid = $DB->insert_record('feedback_item', $data);
- $this->set_mapping('feedback_item', $oldid, $newitemid);
+ $this->set_mapping('feedback_item', $oldid, $newitemid, true); // Can have files
}
protected function process_feedback_completed($data) {
@@ -94,8 +94,8 @@ protected function process_feedback_value($data) {
$data = (object)$data;
$oldid = $data->id;
- $data->item = $this->get_new_parentid('feedback_item');
$data->completed = $this->get_new_parentid('feedback_completed');
+ $data->item = $this->get_mappingid('feedback_item', $data->item);
$data->course_id = $this->get_courseid();
$newitemid = $DB->insert_record('feedback_value', $data);
@@ -108,16 +108,16 @@ protected function process_feedback_tracking($data) {
$data = (object)$data;
$oldid = $data->id;
$data->feedback = $this->get_new_parentid('feedback');
+ $data->completed = $this->get_mappingid('feedback_completed', $data->completed);
$data->userid = $this->get_mappingid('user', $data->userid);
$newitemid = $DB->insert_record('feedback_tracking', $data);
- $this->set_mapping('feedback_tracking', $oldid, $newitemid);
}
-
+
protected function after_execute() {
// Add feedback related files, no need to match by itemname (just internally handled context)
$this->add_related_files('mod_feedback', 'intro', null);
- $this->add_related_files('mod_feedback', 'item', 'id'); //TODO: Verify that this is working.
+ $this->add_related_files('mod_feedback', 'item', 'feedback_item');
}
}
View
@@ -1,277 +0,0 @@
-<?php
- //This php script contains all the stuff to backup/restore
- //feedback mods
-
- //This is the "graphical" structure of the feedback mod:
- //
- // feedback---------------------------------feedback_tracking
- // (CL,pk->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
- //
- //-----------------------------------------------------------
-
- //This function executes all the backup procedure about this mod
- function feedback_backup_mods($bf,$preferences) {
- global $CFG, $DB;
-
- $status = true;
-
- //Iterate over feedback table
- $feedbacks = $DB->get_records ("feedback", array("course"=>$preferences->backup_course), "id");
- if ($feedbacks) {
- foreach ($feedbacks as $feedback) {
- if (backup_mod_selected($preferences,'feedback',$feedback->id)) {
- $status = feedback_backup_one_mod($bf,$preferences,$feedback);
- }
- }
- }
- return $status;
- }
-
- function feedback_backup_one_mod($bf,$preferences,$feedback) {
- global $CFG, $DB;
-
- if (is_numeric($feedback)) {
- $feedback = $DB->get_record('feedback', array('id'=>$feedback));
- }
-
- $status = true;
- fwrite ($bf,start_tag("MOD",3,true));
- //Print feedback data
- fwrite ($bf,full_tag("ID",4,false,$feedback->id));
- fwrite ($bf,full_tag("MODTYPE",4,false,"feedback"));
- fwrite ($bf,full_tag("VERSION",4,false,1)); //version 1 steht fuer die neue Version
- fwrite ($bf,full_tag("NAME",4,false,$feedback->name));
- fwrite ($bf,full_tag("SUMMARY",4,false,$feedback->intro));
- fwrite ($bf,full_tag("ANONYMOUS",4,false,$feedback->anonymous));
- fwrite ($bf,full_tag("EMAILNOTIFICATION",4,false,$feedback->email_notification));
- fwrite ($bf,full_tag("MULTIPLESUBMIT",4,false,$feedback->multiple_submit));
- fwrite ($bf,full_tag("AUTONUMBERING",4,false,$feedback->autonumbering));
- fwrite ($bf,full_tag("SITEAFTERSUB",4,false,$feedback->site_after_submit));
- fwrite ($bf,full_tag("PAGEAFTERSUB",4,false,$feedback->page_after_submit));
- fwrite ($bf,full_tag("PUBLISHSTATS",4,false,$feedback->publish_stats));
- fwrite ($bf,full_tag("TIMEOPEN",4,false,$feedback->timeopen));
- fwrite ($bf,full_tag("TIMECLOSE",4,false,$feedback->timeclose));
- fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$feedback->timemodified));
-
- //backup the items of each feedback
- feedback_backup_data($bf, $preferences, $feedback->id);
-
- //End mod
- $status =fwrite ($bf,end_tag("MOD",3,true));
- return $status;
- }
-
- function feedback_backup_data($bf, $preferences, $feedbackid) {
- global $CFG, $DB;
-
- $status = true;
- $feedbackitems = $DB->get_records('feedback_item', array('feedback'=>$feedbackid));
- if(function_exists('backup_userdata_selected')) { //compatibility-hack for moodle 1.5.x
- $backup_userdata = backup_userdata_selected($preferences,'feedback',$feedbackid);
- }else {
- $backup_userdata = $preferences->mods["feedback"]->userinfo;
- }
-
- if ($feedbackitems) {
- $status =fwrite ($bf,start_tag("ITEMS",4,true));
- foreach ($feedbackitems as $feedbackitem) {
- //Start item
- fwrite ($bf,start_tag("ITEM",5,true));
- //Print item data
- fwrite ($bf,full_tag("ID",6,false,$feedbackitem->id));
- fwrite ($bf,full_tag("NAME",6,false,$feedbackitem->name));
- fwrite ($bf,full_tag("PRESENTATION",6,false,$feedbackitem->presentation));
- fwrite ($bf,full_tag("TYP",6,false,$feedbackitem->typ));
- fwrite ($bf,full_tag("HASVALUE",6,false,$feedbackitem->hasvalue));
- fwrite ($bf,full_tag("POSITION",6,false,$feedbackitem->position));
- fwrite ($bf,full_tag("REQUIRED",6,false,$feedbackitem->required));
-
- if ($backup_userdata) {
- //backup the values of items
- $feedbackvalues = $DB->get_records('feedback_value', array('item'=>$feedbackitem->id));
- if($feedbackvalues) {
- $status =fwrite ($bf,start_tag("FBVALUES",6,true));
- foreach($feedbackvalues as $feedbackvalue) {
- //start value
- fwrite ($bf,start_tag("FBVALUE",7,true));
- //print value data
- fwrite ($bf,full_tag("ID",8,false,$feedbackvalue->id));
- fwrite ($bf,full_tag("ITEM",8,false,$feedbackvalue->item));
- fwrite ($bf,full_tag("COMPLETED",8,false,$feedbackvalue->completed));
- fwrite ($bf,full_tag("VAL",8,false,$feedbackvalue->value));
- fwrite ($bf,full_tag("COURSE_ID",8,false,$feedbackvalue->course_id));
- //End value
- $status =fwrite ($bf,end_tag("FBVALUE",7,true));
- }
- $status =fwrite ($bf,end_tag("FBVALUES",6,true));
- }
- }
- //End item
- $status =fwrite ($bf,end_tag("ITEM",5,true));
- }
- $status =fwrite ($bf,end_tag("ITEMS",4,true));
- }
-
- if($backup_userdata) {
- //backup of feedback-completeds
- $feedbackcompleteds = $DB->get_records('feedback_completed', array('feedback'=>$feedbackid));
- if($feedbackcompleteds) {
- fwrite ($bf,start_tag("COMPLETEDS",4,true));
- foreach ($feedbackcompleteds as $feedbackcompleted) {
- //Start completed
- fwrite ($bf,start_tag("COMPLETED",5,true));
- //Print completed data
- fwrite ($bf,full_tag("ID",6,false,$feedbackcompleted->id));
- fwrite ($bf,full_tag("FEEDBACK",6,false,$feedbackcompleted->feedback));
- fwrite ($bf,full_tag("USERID",6,false,$feedbackcompleted->userid));
- fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$feedbackcompleted->timemodified));
- fwrite ($bf,full_tag("RANDOMRESPONSE",6,false,$feedbackcompleted->random_response));
- fwrite ($bf,full_tag("ANONYMOUSRESPONSE",6,false,$feedbackcompleted->anonymous_response));
-
- //End completed
- $status =fwrite ($bf,end_tag("COMPLETED",5,true));
- }
- $status =fwrite ($bf,end_tag("COMPLETEDS",4,true));
- }
-
- //backup of tracking-data
- $feedbacktrackings = $DB->get_records('feedback_tracking', array('feedback'=>$feedbackid));
- if($feedbacktrackings) {
- fwrite ($bf,start_tag("TRACKINGS",4,true));
- foreach ($feedbacktrackings as $feedbacktracking) {
- //Start tracking
- fwrite ($bf,start_tag("TRACKING",5,true));
- //Print tracking data
- fwrite ($bf,full_tag("ID",6,false,$feedbacktracking->id));
- fwrite ($bf,full_tag("USERID",6,false,$feedbacktracking->userid));
- fwrite ($bf,full_tag("FEEDBACK",6,false,$feedbacktracking->feedback));
- fwrite ($bf,full_tag("COMPLETED",6,false,$feedbacktracking->completed));
-
- //End completed
- $status =fwrite ($bf,end_tag("TRACKING",5,true));
- }
- $status =fwrite ($bf,end_tag("TRACKINGS",4,true));
- }
-
- }
-
- }
-
-
- function feedback_backup_template_data($bf, $templateid, $userinfo) {
- global $CFG, $DB;
-
- $status = true;
- $templateitems = $DB->get_records('feedback_item', array('template'=>$templateid));
-
- if ($templateitems) {
- $status =fwrite ($bf,start_tag("ITEMS",5,true));
- foreach ($templateitems as $templateitem) {
- //Start item
- fwrite ($bf,start_tag("ITEM",6,true));
- //Print item data
- fwrite ($bf,full_tag("ID",7,false,$templateitem->id));
- fwrite ($bf,full_tag("NAME",7,false,$templateitem->name));
- fwrite ($bf,full_tag("PRESENTATION",7,false,$templateitem->presentation));
- fwrite ($bf,full_tag("TYP",7,false,$templateitem->typ));
- fwrite ($bf,full_tag("HASVALUE",7,false,$templateitem->hasvalue));
- fwrite ($bf,full_tag("POSITION",7,false,$templateitem->position));
- fwrite ($bf,full_tag("REQUIRED",7,false,$templateitem->required));
-
- //End item
- $status =fwrite ($bf,end_tag("ITEM",6,true));
- }
- $status =fwrite ($bf,end_tag("ITEMS",5,true));
- }
- }
-
-
-
-
- //Return an array of info (name,value)
- function feedback_check_backup_mods($course,$user_data=false,$backup_unique_code, $instances=null) {
- if (!empty($instances) && is_array($instances) && count($instances)) {
- $info = array();
- foreach ($instances as $id => $instance) {
- $info += feedback_check_backup_mods_instances($instance,$backup_unique_code);
- }
- return $info;
- }
- //First the course data
- $info[0][0] = get_string("modulenameplural","feedback");
- $info[0][1] = feedback_count($course);
-
- //Now, if requested, the user_data
-
- if ($user_data) {
- $info[1][0] = get_string('ready_feedbacks','feedback');
- $info[1][1] = feedback_completed_count($course);
- }
-
- return $info;
- }
-
- ////Return an array of info (name,value)
- function feedback_check_backup_mods_instances($instance,$backup_unique_code) {
- global $DB;
-
- //First the course data
- $info[$instance->id.'0'][0] = '<b>'.$instance->name.'</b>';
- $info[$instance->id.'0'][1] = '';
-
- //Now, if requested, the user_data
- if (!empty($instance->userdata)) {
- $info[$instance->id.'1'][0] = get_string("responses","feedback");
- if ($responses_count = $DB->count_records ('feedback_completed', array('feedback'=>$instance->id))) {
- $info[$instance->id.'1'][1] = $responses_count;
- } else {
- $info[$instance->id.'1'][1] = 0;
- }
- }
- return $info;
- }
-
-///////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////
-//// INTERNAL FUNCTIONS. BASED IN THE MOD STRUCTURE
-
- //Returns an array of feedbacks ids
- function feedback_count ($course) {
- global $DB;
-
- return $DB->count_records('feedback', array('course'=>$course));
- }
-
- function feedback_completed_count($course) {
- global $DB;
-
- $count = 0;
- //get all feedbacks
- $feedbacks = $DB->get_records('feedback', array('course'=>$course));
- if($feedbacks) {
- foreach($feedbacks as $feedback) {
- $count += $DB->count_records('feedback_completed', array('feedback'=>$feedback->id));
- }
- }
- return $count;
- }
-
-
Oops, something went wrong.

0 comments on commit d68c337

Please sign in to comment.