]> git.mjollnir.org Git - moodle.git/commitdiff
Fix for get_users_by_capability() so the caller can choose whether
authormoodler <moodler>
Mon, 25 Sep 2006 03:00:50 +0000 (03:00 +0000)
committermoodler <moodler>
Mon, 25 Sep 2006 03:00:50 +0000 (03:00 +0000)
they want users with doanything included or not

course/lib.php
lib/accesslib.php
lib/deprecatedlib.php

index ad89d2f92a4be32291d0b31518b88cf45af316f1..26ff55f7ab739f5652c737542f81a6b7af55904d 100644 (file)
@@ -1533,7 +1533,9 @@ function print_course($course, $width="100%") {
          $linkcss.' href="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'">'.
          $course->fullname.'</a></b><br />';
 
-    if ($teachers = get_users_by_capability($context, 'moodle/course:update')) {
+    if ($teachers = get_users_by_capability($context, 'moodle/course:update', 
+                                            'u.*, ul.timeaccess as lastaccess, ra.hidden', 
+                                            $sort, '','','',$exceptions, false)) {
         $canseehidden = has_capability('moodle/role:viewhiddenassigns', $context);
         $namesarray = array();
         foreach ($teachers as $teacher) {
index 36b3d7cdf6334e74bb83a45ccb465784856e9ef4..b766e6641d03d3cc3f1f5ff9f8b99a8e16d86e89 100755 (executable)
@@ -2581,7 +2581,7 @@ function get_default_course_role($course) {
  * @param $exceptions - list of users to exclude
  */
 function get_users_by_capability($context, $capability, $fields='', $sort='',
-                                 $limitfrom='', $limitnum='', $groups='', $exceptions='') {
+                                 $limitfrom='', $limitnum='', $groups='', $exceptions='', $doanything=true) {
     global $CFG;
 
 /// Sorting out groups
@@ -2623,21 +2623,28 @@ function get_users_by_capability($context, $capability, $fields='', $sort='',
 
 /// Sorting out roles with this capability set
     if ($possibleroles = get_roles_with_capability($capability, CAP_ALLOW, $context)) {
-        if (!$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID)) {  // Something is seriously wrong
-            return false;
+        if (!$doanything) {
+            if (!$sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID)) {  
+                return false;    // Something is seriously wrong
+            }
+            $doanythingroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext);
         }
-        $doanythingroles = get_roles_with_capability('moodle/site:doanything', CAP_ALLOW, $sitecontext);
 
         $validroleids = array();
         foreach ($possibleroles as $possiblerole) {
-            if (isset($doanythingroles[$possiblerole->id])) {  // We don't want these included
-                continue;
+            if (!$doanything) {
+                if (isset($doanythingroles[$possiblerole->id])) {  // We don't want these included
+                    continue;
+                }
             }
             $caps = role_context_capabilities($possiblerole->id, $context, $capability); // resolved list
             if ($caps[$capability] > 0) { // resolved capability > 0
                 $validroleids[] = $possiblerole->id;
             }
         }
+        if (empty($validroleids)) {
+            return false;
+        }
         $roleids =  '('.implode(',', $validroleids).')';
     } else {
         return false;  // No need to continue, since no roles have this capability set
index d8bac0897878c86904913299dc9319f38512ee66..5518d50d50a39d455eca0848febe278e830a13a3 100644 (file)
@@ -492,7 +492,8 @@ function get_teacher($courseid) {
 
     $context = get_context_instance(CONTEXT_COURSE, $courseid);
 
-    if ($users = get_users_by_capability($context, 'moodle/course:update', 'u.*,ra.hidden', 'sortorder ASC')) {
+    if ($users = get_users_by_capability($context, 'moodle/course:update', 'u.*,ra.hidden', 'sortorder ASC',
+                                         '', '', '', '', false)) {
         foreach ($users as $user) {
             if (!$user->hidden || has_capability('moodle/role:viewhiddenassigns', $context)) {
                 return $user;
@@ -570,8 +571,7 @@ function get_course_students($courseid, $sort='ul.timeaccess', $dir='', $page=''
         }
         // Now we have to make sure site teachers are excluded
 
-        $sitecontext = get_context_instance(CONTEXT_SYSTEM, SITEID);
-        if ($teachers = get_users_by_capability($sitecontext, 'moodle/course:update')) {
+        if ($teachers = get_course_teachers(SITEID)) {
             foreach ($teachers as $teacher) {
                 $exceptions .= ','. $teacher->userid;
             }
@@ -706,8 +706,7 @@ function get_course_teachers($courseid, $sort='t.authority ASC', $exceptions='')
     $sort = 'ul.timeaccess DESC';
     
     $context = get_context_instance(CONTEXT_COURSE, $courseid);
-    return get_users_by_capability($context, 'moodle/course:update', 'u.*, ul.timeaccess as lastaccess', $sort, '','','',$exceptions);
-    
+    return get_users_by_capability($context, 'moodle/course:update', 'u.*, ul.timeaccess as lastaccess, ra.hidden', $sort, '','','',$exceptions, false);
     /// some fields will be missing, like authority, editall
     /*
     return get_records_sql("SELECT u.id, u.username, u.firstname, u.lastname, u.maildisplay, u.mailformat, u.maildigest,
@@ -733,7 +732,7 @@ function get_course_teachers($courseid, $sort='t.authority ASC', $exceptions='')
 function get_course_users($courseid, $sort='ul.timeaccess DESC', $exceptions='', $fields='') {
 
     $context = get_context_instance(CONTEXT_COURSE, $courseid);
-    return get_users_by_capability($context, 'moodle/course:view', 'u.*, ul.timeaccess as lastaccess', $sort, '','','',$exceptions);
+    return get_users_by_capability($context, 'moodle/course:view', 'u.*, ul.timeaccess as lastaccess', $sort, '','','',$exceptions, false);
 
 }
 
@@ -759,7 +758,7 @@ function get_group_students($groupids, $sort='ul.timeaccess DESC') {
     }
 
     $context = get_context_instance(CONTEXT_COURSE, $group->courseid);
-    return get_users_by_capability($context, 'moodle/legacy:student', 'u.*, ul.timeaccess as lastaccess', $sort, '','',$groupids);
+    return get_users_by_capability($context, 'moodle/legacy:student', 'u.*, ul.timeaccess as lastaccess', $sort, '','',$groupids, '', false);
 }
 
 /**