From d559e7825ad08c3907ff9b1530fec58155402981 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Tue, 3 Jun 2003 18:17:33 +0000 Subject: [PATCH] Now backups include forums COMPLETED --- backup/mod/forum/backuplib.php | 200 ++++++++++++++++++++++++++++++++- 1 file changed, 197 insertions(+), 3 deletions(-) diff --git a/backup/mod/forum/backuplib.php b/backup/mod/forum/backuplib.php index 63ac38e304..4ffafff4de 100644 --- a/backup/mod/forum/backuplib.php +++ b/backup/mod/forum/backuplib.php @@ -31,12 +31,206 @@ // //----------------------------------------------------------- - function forum_backup_mods() { - print "hola"; + function forum_backup_mods($bf,$preferences) { + + global $CFG; + + $status = true; + + //Iterate over forum table + $forums = get_records ("forum","course",$preferences->backup_course,"id"); + if ($forums) { + foreach ($forums as $forum) { + //Start mod + fwrite ($bf,start_tag("MOD",3,true)); + //Print forum data + fwrite ($bf,full_tag("ID",4,false,$forum->id)); + fwrite ($bf,full_tag("MODTYPE",4,false,"forum")); + fwrite ($bf,full_tag("TYPE",4,false,$forum->type)); + fwrite ($bf,full_tag("NAME",4,false,$forum->name)); + fwrite ($bf,full_tag("INTRO",4,false,$forum->introo)); + fwrite ($bf,full_tag("OPEN",4,false,$forum->open)); + fwrite ($bf,full_tag("ASSESSED",4,false,$forum->assessed)); + fwrite ($bf,full_tag("FORCESUBSCRIBE",4,false,$forum->forcesubscribe)); + fwrite ($bf,full_tag("TIMEMODIFIED",4,false,$forum->timemodified)); + + //if we've selected to backup users info, then execute backup_forum_suscriptions and + //backup_forum_discussions + if ($preferences->mods["forum"]->userinfo) { + $status = backup_forum_subscriptions($bf,$preferences,$forum->id); + if ($status) { + $status = backup_forum_discussions($bf,$preferences,$forum->id); + } + } + //End mod + $status =fwrite ($bf,end_tag("MOD",3,true)); + } + } + //if we've selected to backup users info, then backup files too + if ($status) { + if ($preferences->mods["forum"]->userinfo) { + $status = backup_forum_files($bf,$preferences); + } + } + return $status; + } + + //Backup forum_subscriptions contents (executed from forum_backup_mods) + function backup_forum_subscriptions ($bf,$preferences,$forum) { + + global $CFG; + + $status = true; + + $forum_subscriptions = get_records("forum_subscriptions","forum",$forum,"id"); + //If there is subscriptions + if ($forum_subscriptions) { + //Write start tag + $status =fwrite ($bf,start_tag("SUBSCRIPTIONS",4,true)); + //Iterate over each answer + foreach ($forum_subscriptions as $for_sus) { + //Start suscription + $status =fwrite ($bf,start_tag("SUBSCRIPTION",5,true)); + //Print forum_subscriptions contents + fwrite ($bf,full_tag("ID",6,false,$for_sus->id)); + fwrite ($bf,full_tag("USERID",6,false,$for_sus->userid)); + //End subscription + $status =fwrite ($bf,end_tag("SUBSCRIPTION",5,true)); + } + //Write end tag + $status =fwrite ($bf,end_tag("SUBSCRIPTIONS",4,true)); + } + return $status; + } + + //Backup forum_discussions contents (executed from forum_backup_mods) + function backup_forum_discussions ($bf,$preferences,$forum) { + + global $CFG; + + $status = true; + + $forum_discussions = get_records("forum_discussions","forum",$forum,"id"); + //If there are discussions + if ($forum_discussions) { + //Write start tag + $status =fwrite ($bf,start_tag("DISCUSSIONS",4,true)); + //Iterate over each discussion + foreach ($forum_discussions as $for_dis) { + //Start discussion + $status =fwrite ($bf,start_tag("DISCUSSION",5,true)); + //Print forum_discussions contents + fwrite ($bf,full_tag("ID",6,false,$for_dis->id)); + fwrite ($bf,full_tag("NAME",6,false,$for_dis->name)); + fwrite ($bf,full_tag("FIRSTPOST",6,false,$for_dis->firstpost)); + fwrite ($bf,full_tag("ASSESSED",6,false,$for_dis->assessed)); + fwrite ($bf,full_tag("TIMEMODIFIED",6,false,$for_dis->timemodified)); + //Now print posts to xml + $status = backup_forum_posts($bf,$preferences,$for_dis->id); + //End discussion + $status =fwrite ($bf,end_tag("DISCUSSION",5,true)); + } + //Write end tag + $status =fwrite ($bf,end_tag("DISCUSSIONS",4,true)); + } + return $status; + } + + //Backup forum_posts contents (executed from backup_forum_discussions) + function backup_forum_posts ($bf,$preferences,$discussion) { + + global $CFG; + + $status = true; + + $forum_posts = get_records("forum_posts","discussion",$discussion,"id"); + //If there are posts + if ($forum_posts) { + //Write start tag + $status =fwrite ($bf,start_tag("POSTS",6,true)); + //Iterate over each post + foreach ($forum_posts as $for_pos) { + //Start post + $status =fwrite ($bf,start_tag("POST",7,true)); + //Print forum_posts contents + fwrite ($bf,full_tag("ID",8,false,$for_pos->id)); + fwrite ($bf,full_tag("PARENT",8,false,$for_pos->parent)); + fwrite ($bf,full_tag("USERID",8,false,$for_pos->userid)); + fwrite ($bf,full_tag("CREATED",8,false,$for_pos->created)); + fwrite ($bf,full_tag("MODIFIED",8,false,$for_pos->modified)); + fwrite ($bf,full_tag("MAILED",8,false,$for_pos->mailed)); + fwrite ($bf,full_tag("SUBJECT",8,false,$for_pos->subject)); + fwrite ($bf,full_tag("MESSAGE",8,false,$for_pos->message)); + fwrite ($bf,full_tag("FORMAT",8,false,$for_pos->format)); + fwrite ($bf,full_tag("ATTACHMENT",8,false,$for_pos->attachment)); + fwrite ($bf,full_tag("TOTALSCORE",8,false,$for_pos->totalscore)); + //Now print ratings to xml + $status = backup_forum_ratings($bf,$preferences,$for_pos->id); + + //End discussion + $status =fwrite ($bf,end_tag("POST",7,true)); + } + //Write end tag + $status =fwrite ($bf,end_tag("POSTS",6,true)); + } + return $status; + } + + + //Backup forum_ratings contents (executed from backup_forum_posts) + function backup_forum_ratings ($bf,$preferences,$post) { + + global $CFG; + + $status = true; + + $forum_ratings = get_records("forum_ratings","post",$post,"id"); + //If there are ratings + if ($forum_ratings) { + //Write start tag + $status =fwrite ($bf,start_tag("RATINGS",8,true)); + //Iterate over each rating + foreach ($forum_ratings as $for_rat) { + //Start rating + $status =fwrite ($bf,start_tag("RATING",9,true)); + //Print forum_rating contents + fwrite ($bf,full_tag("ID",10,false,$for_rat->id)); + fwrite ($bf,full_tag("USERID",10,false,$for_rat->userid)); + fwrite ($bf,full_tag("TIME",10,false,$for_rat->time)); + fwrite ($bf,full_tag("POST_RATING",10,false,$for_rat->rating)); + //End rating + $status =fwrite ($bf,end_tag("RATING",9,true)); + } + //Write end tag + $status =fwrite ($bf,end_tag("RATINGS",8,true)); + } + return $status; } + //Backup forum files because we've selected to backup user info + //and files are user info's level + function backup_forum_files($bf,$preferences) { + + global $CFG; + + $status = true; + + //First we check to moddata exists and create it as necessary + //in temp/backup/$backup_code dir + $status = check_and_create_moddata_dir($preferences->backup_unique_code); + //Now copy the forum dir + if ($status) { + $status = backup_copy_file($CFG->dataroot."/".$preferences->backup_course."/".$CFG->moddata."/forum", + $CFG->dataroot."/temp/backup/".$preferences->backup_unique_code."/moddata/forum"); + } + + return $status; + + } + + ////Return an array of info (name,value) - function NO_forum_check_backup_mods($course,$user_data=false,$backup_unique_code) { + function forum_check_backup_mods($course,$user_data=false,$backup_unique_code) { //First the course data $info[0][0] = get_string("modulenameplural","forum"); if ($ids = forum_ids ($course)) { -- 2.39.5