# This patch file was generated by NetBeans IDE
# This patch can be applied using context Tools: Apply Diff Patch action on respective folder.
# It uses platform neutral UTF-8 encoding.
# Above lines and this line are ignored by the patching process.
Index: moodle/mod/forum/lib.php
--- moodle/mod/forum/lib.php Base (1.609.2.61)
+++ moodle/mod/forum/lib.php Locally Modified (Based On 1.609.2.61)
@@ -945,19 +945,61 @@
         $discussions = forum_get_user_involved_discussions($forum->id, $user->id);
 
         foreach ($posts as $post) {
-            if (!isset($discussions[$forum->discussion])) {
+           
+            if (!isset($discussions[$post->discussion])) {
                 continue;
             }
-            $discussion = $discussions[$forum->discussion];
-            forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, false);
+            
+            $discussion = $discussions[$post->discussion];
+             
+            $ratings = null;
+            
+            if ($forum->assessed) {
+                if ($scale = make_grades_menu($forum->scale)) {
+                    $ratings =new object();
+                    $ratings->scale = $scale;
+                    $ratings->assesstimestart = $forum->assesstimestart;
+                    $ratings->assesstimefinish = $forum->assesstimefinish;
+                    $ratings->allow = false;
         }
+            }
 
+            pre_load_all_ratings($cm, $discussion);
+            
+            forum_print_post($post, $discussion, $forum, $cm, $course, false, false, false, $ratings);
+       
+        }
+
     } else {
         echo "<p>".get_string("noposts", "forum")."</p>";
     }
 }
 
 /**
+ * Preload all ratings of a discussion into course module
+ * Use this function to optimize post display with ratings: 
+ * one query only and minimal memory
+ * @param object $cm course module (passed by reference as cache attribut is modified)
+ * @param object $discussion the discussion for which the ratings are cached
+ */
+function pre_load_all_ratings(&$cm, $discussion) {
+    global $CFG,$USER;
+    $cm->cache->ratings = array();
+    $cm->cache->myratings = array();
+    if ($postratings = forum_get_all_discussion_ratings($discussion)) {
+        foreach ($postratings as $pr) {
+            if (!isset($cm->cache->ratings[$pr->postid])) {
+                $cm->cache->ratings[$pr->postid] = array();
+            }
+            $cm->cache->ratings[$pr->postid][$pr->id] = $pr->rating;
+            if ($pr->userid == $USER->id) {
+                $cm->cache->myratings[$pr->postid] = $pr->rating;
+            }
+        }
+    }
+}
+
+/**
  *
  */
 function forum_print_overview($courses,&$htmlarray) {
@@ -4819,23 +4861,9 @@
                 $ratingsformused = true;
             }
 
-            // preload all ratings - one query only and minimal memory
-            $cm->cache->ratings = array();
-            $cm->cache->myratings = array();
-            if ($postratings = forum_get_all_discussion_ratings($discussion)) {
-                foreach ($postratings as $pr) {
-                    if (!isset($cm->cache->ratings[$pr->postid])) {
-                        $cm->cache->ratings[$pr->postid] = array();
+            pre_load_all_ratings($cm, $discussion);
                     }
-                    $cm->cache->ratings[$pr->postid][$pr->id] = $pr->rating;
-                    if ($pr->userid == $USER->id) {
-                        $cm->cache->myratings[$pr->postid] = $pr->rating;
                     }
-                }
-                unset($postratings);
-            }
-        }
-    }
 
 
     $post->forum = $forum->id;   // Add the forum id to the post object, later used by forum_print_post
