From a09a837f20e2e09a19c8120bf71bac794ee68ae6 Mon Sep 17 00:00:00 2001 From: "pau.ferrer-ocana" Date: Wed, 29 Oct 2014 10:32:57 +0100 Subject: [PATCH] MDL-42875 users: Show only profile visible roles on participants list --- user/index.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/user/index.php b/user/index.php index c1adf8904b0..df610d9a50a 100644 --- a/user/index.php +++ b/user/index.php @@ -438,14 +438,19 @@ $params['contextlevel'] = CONTEXT_USER; $select .= $ccselect; $joins[] = $ccjoin; +// We want to query both the current context and parent contexts. +list($relatedctxsql, $relatedctxparams) = $DB->get_in_or_equal($context->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'relatedctx'); +$params = array_merge($params, $relatedctxparams); // Limit list to users with some role only. if ($roleid) { - // We want to query both the current context and parent contexts. - list($relatedctxsql, $relatedctxparams) = $DB->get_in_or_equal($context->get_parent_context_ids(true), SQL_PARAMS_NAMED, 'relatedctx'); - $wheres[] = "u.id IN (SELECT userid FROM {role_assignments} WHERE roleid = :roleid AND contextid $relatedctxsql)"; - $params = array_merge($params, array('roleid' => $roleid), $relatedctxparams); + $params = array_merge($params, array('roleid' => $roleid)); +} else { + $profileroles = explode(',', $CFG->profileroles); + list($insql, $inparams) = $DB->get_in_or_equal($profileroles, SQL_PARAMS_NAMED); + $wheres[] = "u.id IN (SELECT userid FROM {role_assignments} WHERE roleid $insql AND contextid $relatedctxsql)"; + $params = array_merge($params, $inparams); } $from = implode("\n", $joins); -- 2.43.0