Now backups include forums COMPLETED
authorstronk7 <stronk7>
Tue, 3 Jun 2003 18:17:33 +0000 (18:17 +0000)
committerstronk7 <stronk7>
Tue, 3 Jun 2003 18:17:33 +0000 (18:17 +0000)
backup/mod/forum/backuplib.php

index 63ac38e304e491f56e01d58bb9a64e0f67675ba6..4ffafff4de714bd1c7bd72ad94f472dc9b7283df 100644 (file)
     //
     //-----------------------------------------------------------
 
-    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)) {