diff --git a/mod/forum/lib.php b/mod/forum/lib.php
index a3f28f1..cde7805 100644
--- a/mod/forum/lib.php
+++ b/mod/forum/lib.php
@@ -7712,12 +7712,11 @@ function forum_get_courses_user_posted_in($user, $discussionsonly = false, $incl
     // table and join to the userid there. If we are looking for posts then we need
     // to join to the forum_posts table.
     if (!$discussionsonly) {
-        $joinsql = 'JOIN {forum_discussions} fd ON fd.course = c.id
-                    JOIN {forum_posts} fp ON fp.discussion = fd.id';
+        $joinsql = '{forum_discussions} fd JOIN {forum_posts} fp ON fp.discussion = fd.id';
         $wheresql = 'fp.userid = :userid';
         $params = array('userid' => $user->id);
     } else {
-        $joinsql = 'JOIN {forum_discussions} fd ON fd.course = c.id';
+        $joinsql = '{forum_discussions} fd';
         $wheresql = 'fd.userid = :userid';
         $params = array('userid' => $user->id);
     }
@@ -7732,11 +7731,14 @@ function forum_get_courses_user_posted_in($user, $discussionsonly = false, $incl
 
     // Now we need to get all of the courses to search.
     // All courses where the user has posted within a forum will be returned.
-    $sql = "SELECT DISTINCT c.* $ctxselect
+    $sql = "SELECT c.* $ctxselect
             FROM {course} c
-            $joinsql
-            $ctxjoin
-            WHERE $wheresql";
+              $ctxjoin
+            WHERE c.id IN (
+              SELECT fd.course
+              FROM $joinsql
+              WHERE $wheresql
+            )";
     $courses = $DB->get_records_sql($sql, $params, $limitfrom, $limitnum);
     if ($includecontexts) {
         array_map('context_instance_preload', $courses);
@@ -7767,22 +7769,24 @@ function forum_get_forums_user_posted_in($user, array $courseids = null, $discus
         $where[] = 'f.course '.$coursewhere;
     }
     if (!$discussionsonly) {
-        $joinsql = 'JOIN {forum_discussions} fd ON fd.forum = f.id
-                    JOIN {forum_posts} fp ON fp.discussion = fd.id';
+        $joinsql = '{forum_discussions} fd JOIN {forum_posts} fp ON fp.discussion = fd.id';
         $where[] = 'fp.userid = :userid';
     } else {
-        $joinsql = 'JOIN {forum_discussions} fd ON fd.forum = f.id';
+        $joinsql = '{forum_discussions} fd';
         $where[] = 'fd.userid = :userid';
     }
     $params['userid'] = $user->id;
     $wheresql = join(' AND ', $where);
 
-    $sql = "SELECT DISTINCT f.*, cm.id AS cmid
+    $sql = "SELECT f.*, cm.id AS cmid
             FROM {forum} f
             JOIN {course_modules} cm ON cm.instance = f.id
             JOIN {modules} m ON m.id = cm.module
-            $joinsql
-            WHERE $wheresql";
+            WHERE f.id IN (
+              SELECT fd.forum
+              FROM $joinsql
+              WHERE $wheresql
+            )";
     $courseforums = $DB->get_records_sql($sql, $params, $limitfrom, $limitnum);
     return $courseforums;
 }
@@ -8038,7 +8042,7 @@ function forum_get_posts_by_user($user, array $courses, $musthaveaccess = false,
     }
 
     // Prepare SQL to both count and search
-    $userfields = user_picture::fields('u', null, 'userid');
+    $userfields = user_picture::fields('u', null, 'useriddup');
     $countsql = 'SELECT COUNT(*) ';
     $selectsql = 'SELECT p.*, d.forum, d.name AS discussionname, '.$userfields.' ';
     $wheresql = implode(" OR ", $forumsearchwhere);
