// Do basic automatic PARAM checks on incoming data, using params description
// If any problems are found then exceptions are thrown with helpful error messages
-- $params = self::validate_parameters(self::get_enrolled_users_parameters(), array('courseid'=>$courseid, 'withcapability'=>$withcapability, 'groupid'=>$groupid, 'onlyactive'=>$onlyactive));
++ $params = self::validate_parameters(self::get_enrolled_users_parameters(), array(
++ 'courseid'=>$courseid,
++ 'withcapability'=>$withcapability,
++ 'groupid'=>$groupid,
++ 'onlyactive'=>$onlyactive)
++ );
$coursecontext = get_context_instance(CONTEXT_COURSE, $params['courseid']);
if ($courseid == SITEID) {
try {
self::validate_context($context);
} catch (Exception $e) {
-- $exceptionparam = new stdClass();
-- $exceptionparam->message = $e->getMessage();
-- $exceptionparam->courseid = $params['courseid'];
-- throw new moodle_exception(
-- get_string('errorcoursecontextnotvalid' , 'webservice', $exceptionparam));
++ $exceptionparam = new stdClass();
++ $exceptionparam->message = $e->getMessage();
++ $exceptionparam->courseid = $params['courseid'];
++ throw new moodle_exception(get_string('errorcoursecontextnotvalid' , 'webservice', $exceptionparam));
}
if ($courseid == SITEID) {
if ($withcapability) {
require_capability('moodle/role:review', $coursecontext);
}
-- if ($groupid) {
-- if (groups_is_member($groupid)) {
-- require_capability('moodle/site:accessallgroups', $coursecontext);
-- }
++ if ($groupid && groups_is_member($groupid)) {
++ require_capability('moodle/site:accessallgroups', $coursecontext);
}
if ($onlyactive) {
require_capability('moodle/course:enrolreview', $coursecontext);
}
- list($sql, $params) = get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
- $sql = "SELECT DISTINCT ue.userid, e.courseid
+ list($sqlparams, $params) = get_enrolled_sql($coursecontext, $withcapability, $groupid, $onlyactive);
+ $sql = "SELECT ue.userid, e.courseid, u.firstname, u.lastname, u.username, c.id as usercontextid
FROM {user_enrolments} ue
JOIN {enrol} e ON (e.id = ue.enrolid)
- WHERE e.courseid = :courseid AND ue.userid IN ($sql)";
+ JOIN {user} u ON (ue.userid = u.id)
+ JOIN {context} c ON (u.id = c.instanceid AND contextlevel = " . CONTEXT_USER . ")
+ WHERE e.courseid = :courseid AND ue.userid IN ($sqlparams)
+ GROUP BY ue.userid, e.courseid, u.firstname, u.lastname, u.username, c.id";
$params['courseid'] = $courseid;
-
$enrolledusers = $DB->get_records_sql($sql, $params);
-
$result = array();
++ $isadmin = is_siteadmin($USER);
++ $canviewfullnames = has_capability('moodle/site:viewfullnames', $context);
foreach ($enrolledusers as $enrolleduser) {
- $result[] = array('courseid' => $enrolleduser->courseid,
- 'userid' => $enrolleduser->userid);
+ $profilimgurl = moodle_url::make_pluginfile_url($enrolleduser->usercontextid, 'user', 'icon', NULL, '/', 'f1');
+ $profilimgurlsmall = moodle_url::make_pluginfile_url($enrolleduser->usercontextid, 'user', 'icon', NULL, '/', 'f2');
- $resultuser = array('courseid' => $enrolleduser->courseid,
- 'userid' => $enrolleduser->userid, 'fullname' => fullname($enrolleduser),
++ $resultuser = array(
++ 'courseid' => $enrolleduser->courseid,
++ 'userid' => $enrolleduser->userid,
++ 'fullname' => fullname($enrolleduser),
+ 'profileimgurl' => $profilimgurl->out(false),
- 'profileimgurlsmall' => $profilimgurlsmall->out(false));
- //check if we can return username
- $isadmin = is_siteadmin($USER);
++ 'profileimgurlsmall' => $profilimgurlsmall->out(false)
++ );
++ // check if we can return username
+ if ($isadmin) {
+ $resultuser['username'] = $enrolleduser->username;
+ }
- //check if we can return first and last name
- if ($isadmin or has_capability('moodle/site:viewfullnames', $context)) {
++ // check if we can return first and last name
++ if ($isadmin or $canviewfullnames) {
+ $resultuser['firstname'] = $enrolleduser->firstname;
+ $resultuser['lastname'] = $enrolleduser->lastname;
+ }
+ $result[] = $resultuser;
}
return $result;
);
}
--
/**
* Returns description of method parameters
* @return external_function_parameters