From 1d546bb125b043e245d06779e7ddb2d5da19ba54 Mon Sep 17 00:00:00 2001 From: moodler Date: Mon, 25 Sep 2006 03:00:50 +0000 Subject: [PATCH] Fix for get_users_by_capability() so the caller can choose whether they want users with doanything included or not --- course/lib.php | 4 +++- lib/accesslib.php | 19 +++++++++++++------ lib/deprecatedlib.php | 13 ++++++------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/course/lib.php b/course/lib.php index ad89d2f92a..26ff55f7ab 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1533,7 +1533,9 @@ function print_course($course, $width="100%") { $linkcss.' href="'.$CFG->wwwroot.'/course/view.php?id='.$course->id.'">'. $course->fullname.'
'; - 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) { diff --git a/lib/accesslib.php b/lib/accesslib.php index 36b3d7cdf6..b766e6641d 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -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 diff --git a/lib/deprecatedlib.php b/lib/deprecatedlib.php index d8bac08978..5518d50d50 100644 --- a/lib/deprecatedlib.php +++ b/lib/deprecatedlib.php @@ -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); } /** -- 2.39.5