]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-10263, enable forum search for multiple groups
authortoyomoyo <toyomoyo>
Wed, 28 Nov 2007 07:53:44 +0000 (07:53 +0000)
committertoyomoyo <toyomoyo>
Wed, 28 Nov 2007 07:53:44 +0000 (07:53 +0000)
mod/forum/lib.php

index 0e37bf503f5fcb51ea7a466f7ff521104cc0bc18..ea277a04cef464eab4d49140be1d25ca8731a6c4 100644 (file)
@@ -1417,8 +1417,15 @@ function forum_get_readable_forums($userid, $courseid=0) {
                                 ORDER BY f.name ASC";
 
         if ($forums = get_records_sql($selectforums)) {
-
-            $group = groups_get_all_groups($course->id, $userid);
+            $groups = array();
+            if ($group = groups_get_all_groups($course->id, $userid)) {          
+                foreach($group as $grp) {
+                    if (isset($grp->id)) {
+                        $groups[] = $grp->id;
+                    }
+                }
+            }
 
             foreach ($forums as $forum) {
                 $forumcontext = get_context_instance(CONTEXT_MODULE, $forum->cmid);
@@ -1439,7 +1446,7 @@ function forum_get_readable_forums($userid, $courseid=0) {
                     if ($forum->cmgroupmode == SEPARATEGROUPS
                             && !has_capability('moodle/site:accessallgroups', $forumcontext)) {
                         $forum->accessallgroups = false;
-                        $forum->accessgroup = $group->id;  // The user can only access
+                        $forum->accessgroup = $groups;  // The user can only access
                                                            // discussions for this group.
                     } else {
                         $forum->accessallgroups = true;
@@ -1521,7 +1528,8 @@ function forum_search_posts($searchterms, $courseid=0, $limitfrom=0, $limitnum=5
         }
         if (!$forums[$i]->accessallgroups) {
             if (!empty($forums[$i]->accessgroup)) {
-                $selectdiscussion .= " AND (d.groupid = {$forums[$i]->accessgroup}";
+                $groups = rtrim(implode(",", $forums[$i]->accessgroup),",");
+                $selectdiscussion .= " AND (d.groupid in ($groups)"; 
                 $selectdiscussion .= ' OR d.groupid = -1)';  // -1 means open for all groups.
             } else {
                 // User isn't in any group. Only search discussions that are