]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-16262 recovery of broken single simple discussions after old reset
authorskodak <skodak>
Thu, 1 Jan 2009 22:53:43 +0000 (22:53 +0000)
committerskodak <skodak>
Thu, 1 Jan 2009 22:53:43 +0000 (22:53 +0000)
mod/forum/lib.php

index 33890be898b7ea1b4539d56bc5f08fdcbd1624e4..c56daeff3c4b1ee75a3f20206a2054cc6fb5abb6 100644 (file)
@@ -138,7 +138,22 @@ function forum_update_instance($forum) {
                 notify('Warning! There is more than one discussion in this forum - using the most recent');
                 $discussion = array_pop($discussions);
             } else {
-                print_error('cannotfinddisscussion', 'forum');
+                // try to recover by creating initial discussion - MDL-16262
+                $discussion = new object();
+                $discussion->course   = $forum->course;
+                $discussion->forum    = $forum->id;
+                $discussion->name     = $forum->name;
+                $discussion->intro    = $forum->intro;
+                $discussion->assessed = $forum->assessed;
+                $discussion->format   = $forum->type;
+                $discussion->mailnow  = false;
+                $discussion->groupid  = -1;
+
+                forum_add_discussion($discussion, null, $message);
+
+                if (! $discussion = $DB->get_record('forum_discussions', array('forum'=>$forum->id))) {
+                    print_error('cannotadd', 'forum');
+                }
             }
         }
         if (! $post = $DB->get_record('forum_posts', array('id'=>$discussion->firstpost))) {