]> git.mjollnir.org Git - moodle.git/commitdiff
taking out user_student table reference in SQL, replaced with role_assignment
authortoyomoyo <toyomoyo>
Thu, 14 Sep 2006 03:54:37 +0000 (03:54 +0000)
committertoyomoyo <toyomoyo>
Thu, 14 Sep 2006 03:54:37 +0000 (03:54 +0000)
blog/lib.php

index 41e9dd9c13e11db683c86a65f7c566441e49f481..d49f3fe02c0ae0d9108729348bdcb7b44e50e04c 100755 (executable)
 
             case 'course':
                 if ($filterselect != SITEID) {
+                    
+                    // all users with a role assigned
+                    $context = get_context_instance(CONTEXT_COURSE, $filterselect);
+                    if ($parents = get_parent_contexts($context)) {
+                        $contextlists = 'OR ra.contextid IN ('.implode(',', $parents).'))';  
+                    } else {
+                        $contextlists = ')';
+                    }      
+                    
                     $SQL = '(SELECT '.$requiredfields.' FROM '.$CFG->prefix.'post p, '.$tagtablesql
-                            .$CFG->prefix.'user_students s, '.$CFG->prefix.'user u
-                            WHERE p.userid = s.userid '.$tagquerysql.'
-                            AND s.course = '.$filterselect.'
-                            AND u.id = p.userid
-                            AND (p.publishstate = \'site\' OR p.publishstate = \'public\' OR p.userid = '.$USER->id.'))
-
-                            UNION
-
-                            (SELECT '.$requiredfields.' FROM '.$CFG->prefix.'post p, '.$tagtablesql
-                            .$CFG->prefix.'user_teachers t, '.$CFG->prefix.'user u
-                            WHERE p.userid = t.userid '.$tagquerysql.'
-                            AND t.course = '.$filterselect.'
+                            .$CFG->prefix.'role_assignments ra, '.$CFG->prefix.'user u
+                            WHERE p.userid = ra.userid '.$tagquerysql.'
+                            AND (ra.contextid = '.$context->id.' '.$contextlists.'
                             AND u.id = p.userid
-                            AND (p.publishstate = \'site\' OR p.publishstate = \'public\' OR p.userid = '.$USER->id.'))';    //this will break for postgres, i think
+                            AND (p.publishstate = \'site\' OR p.publishstate = \'public\' OR p.userid = '.$USER->id.'))';
                 } else {
 
                     if (isloggedin()) {