Skip to content

Commit

Permalink
MDL-14978 removed obsoleted get_course_students()
Browse files Browse the repository at this point in the history
  • Loading branch information
skodak committed May 25, 2008
1 parent 4119bfe commit e2fc9a8
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 129 deletions.
127 changes: 0 additions & 127 deletions lib/deprecatedlib.php
Expand Up @@ -203,133 +203,6 @@ function get_recent_enrolments($courseid, $timestart) {
ORDER BY l.time ASC");
}

/**
* Returns array of userinfo of all students in this course
* or on this site if courseid is id of site
*
* @uses $CFG
* @uses SITEID
* @param int $courseid The course in question.
* @param string $sort ?
* @param string $dir ?
* @param int $page ?
* @param int $recordsperpage ?
* @param string $firstinitial ?
* @param string $lastinitial ?
* @param ? $group ?
* @param string $search ?
* @param string $fields A comma separated list of fields to be returned from the chosen table.
* @param string $exceptions ?
* @return object
* @todo Finish documenting this function
*/
function get_course_students($courseid, $sort='ul.timeaccess', $dir='', $page='', $recordsperpage='',
$firstinitial='', $lastinitial='', $group=NULL, $search='', $fields='', $exceptions='') {

global $CFG;

// make sure it works on the site course
$context = get_context_instance(CONTEXT_COURSE, $courseid);

/// For the site course, old way was to check if $CFG->allusersaresitestudents was set to true.
/// The closest comparible method using roles is if the $CFG->defaultuserroleid is set to the legacy
/// student role. This function should be replaced where it is used with something more meaningful.
if (($courseid == SITEID) && !empty($CFG->defaultuserroleid) && empty($CFG->nodefaultuserrolelists)) {
if ($roles = get_roles_with_capability('moodle/legacy:student', CAP_ALLOW, $context)) {
$hascap = false;
foreach ($roles as $role) {
if ($role->id == $CFG->defaultuserroleid) {
$hascap = true;
break;
}
}
if ($hascap) {
// return users with confirmed, undeleted accounts who are not site teachers
// the following is a mess because of different conventions in the different user functions
$sort = str_replace('s.timeaccess', 'lastaccess', $sort); // site users can't be sorted by timeaccess
$sort = str_replace('timeaccess', 'lastaccess', $sort); // site users can't be sorted by timeaccess
$sort = str_replace('u.', '', $sort); // the get_user function doesn't use the u. prefix to fields
$fields = str_replace('u.', '', $fields);
if ($sort) {
$sort = $sort .' '. $dir;
}
// Now we have to make sure site teachers are excluded

$exceptions = array();
if ($teachers = get_course_teachers(SITEID)) {
foreach ($teachers as $teacher) {
$exceptions[] = $teacher->userid;
}
}

return get_users(true, $search, true, $exceptions, $sort, $firstinitial, $lastinitial,
$page, $recordsperpage, $fields ? $fields : '*');
}
}
}

$LIKE = sql_ilike();
$fullname = sql_fullname('u.firstname','u.lastname');

$groupmembers = '';

$select = "c.contextlevel=".CONTEXT_COURSE." AND "; // Must be on a course
if ($courseid != SITEID) {
// If not site, require specific course
$select.= "c.instanceid=$courseid AND ";
}
$select.="rc.capability='moodle/legacy:student' AND rc.permission=".CAP_ALLOW." AND ";

$select .= ' u.deleted = \'0\' ';

if (!$fields) {
$fields = 'u.id, u.confirmed, u.username, u.firstname, u.lastname, '.
'u.maildisplay, u.mailformat, u.maildigest, u.email, u.city, '.
'u.country, u.picture, u.idnumber, u.department, u.institution, '.
'u.emailstop, u.lang, u.timezone, ul.timeaccess as lastaccess';
}

if ($search) {
$search = ' AND ('. $fullname .' '. $LIKE .'\'%'. $search .'%\' OR email '. $LIKE .'\'%'. $search .'%\') ';
}

if ($firstinitial) {
$select .= ' AND u.firstname '. $LIKE .'\''. $firstinitial .'%\' ';
}

if ($lastinitial) {
$select .= ' AND u.lastname '. $LIKE .'\''. $lastinitial .'%\' ';
}

if ($group === 0) { /// Need something here to get all students not in a group
return array();

} else if ($group !== NULL) {
$groupmembers = "INNER JOIN {$CFG->prefix}groups_members gm on u.id=gm.userid";
$select .= ' AND gm.groupid = \''. $group .'\'';
}

if (!empty($exceptions)) {
$select .= ' AND u.id NOT IN ('. $exceptions .')';
}

if ($sort) {
$sort = ' ORDER BY '. $sort .' ';
}

$students = get_records_sql("SELECT $fields
FROM {$CFG->prefix}user u INNER JOIN
{$CFG->prefix}role_assignments ra on u.id=ra.userid INNER JOIN
{$CFG->prefix}role_capabilities rc ON ra.roleid=rc.roleid INNER JOIN
{$CFG->prefix}context c ON c.id=ra.contextid LEFT OUTER JOIN
{$CFG->prefix}user_lastaccess ul on ul.userid=ra.userid
$groupmembers
WHERE $select $search $sort $dir", $page, $recordsperpage);

return $students;
}


/**
* Returns list of all teachers in this course
*
Expand Down
3 changes: 1 addition & 2 deletions mod/wiki/lib.php
Expand Up @@ -565,8 +565,7 @@ function wiki_get_other_wikis(&$wiki, &$user, &$course, $currentid=0) {
/// If the user is an editing teacher, or a non-editing teacher not assigned to a group, show all student
/// wikis, regardless of creation.
if ((SITEID != $course->id) and ($isteacheredit or ($groupmode == NOGROUPS))) {

if ($students = get_course_students($course->id)) {
if ($students = get_users_by_capability(get_context_instance(CONTEXT_COURSE, $course->id), 'moodle/course:view', '', '', '', '', '', '', false)) {
/// Default pagename is dependent on the wiki settings.
$defpagename = empty($wiki->pagename) ? get_string('wikidefaultpagename', 'wiki') : $wiki->pagename;

Expand Down

0 comments on commit e2fc9a8

Please sign in to comment.