commit e1e8dfa01b8e48da0df6e93b6951a530986ba476
Author: Jonathon Fowler <fowlerj@usq.edu.au>
Date:   Wed Jan 11 14:31:04 2012 +1000

    fix malformed forum 'update post' log entries and handle them in existing backups

diff --git a/mod/forum/backup/moodle2/restore_forum_activity_task.class.php b/mod/forum/backup/moodle2/restore_forum_activity_task.class.php
index bb5bfb6..9326a74 100644
--- a/mod/forum/backup/moodle2/restore_forum_activity_task.class.php
+++ b/mod/forum/backup/moodle2/restore_forum_activity_task.class.php
@@ -111,6 +111,8 @@ class restore_forum_activity_task extends restore_activity_task {
                                         null, 'delete discussion');
         $rules[] = new restore_log_rule('forum', 'delete discussion', 'view.php?id={course_module}', '{forum}');
         $rules[] = new restore_log_rule('forum', 'add post', 'discuss.php?d={forum_discussion}&parent={forum_post}', '{forum_post}');
+        $rules[] = new restore_log_rule('forum', 'update post', 'discuss.php?d={forum_discussion}#p{buggy}&parent={forum_post}', '{forum_post}',
+                                        null, null, 'discuss.php?d={forum_discussion}&parent={forum_post}');
         $rules[] = new restore_log_rule('forum', 'update post', 'discuss.php?d={forum_discussion}&parent={forum_post}', '{forum_post}');
         $rules[] = new restore_log_rule('forum', 'prune post', 'discuss.php?d={forum_discussion}', '{forum_post}');
         $rules[] = new restore_log_rule('forum', 'delete post', 'discuss.php?d={forum_discussion}', '[post]');
diff --git a/mod/forum/post.php b/mod/forum/post.php
index f3f2f82..6b2aad1 100644
--- a/mod/forum/post.php
+++ b/mod/forum/post.php
@@ -655,13 +655,15 @@ if ($fromform = $mform_post->get_data()) {
             // the forum itself since it only has one discussion
             // thread.
             $discussionurl = "view.php?f=$forum->id";
+            $discussionurlfragment = '';
         } else {
-            $discussionurl = "discuss.php?d=$discussion->id#p$fromform->id";
+            $discussionurl = "discuss.php?d=$discussion->id";
+            $discussionurlfragment = "#p$fromform->id";
         }
         add_to_log($course->id, "forum", "update post",
                 "$discussionurl&amp;parent=$fromform->id", "$fromform->id", $cm->id);
 
-        redirect(forum_go_back_to("$discussionurl"), $message.$subscribemessage, $timemessage);
+        redirect(forum_go_back_to($discussionurl.$discussionurlfragment), $message.$subscribemessage, $timemessage);
 
         exit;
 
