Dentro do arquivo wwwroot/lib/datalib.php
Na sessão abaixo (aproximadamente a 738 linha):
/*
* Note: Here we use a LEFT OUTER JOIN that can
* "optionally" match to avoid passing a ton of context
* ids in an IN() clause. Perhaps a subselect is faster.
*
* In any case, this SQL is not-so-nice over large sets of
* courses with no $categoryclause.
*
*/
$sql = "SELECT ctx.path, ctx.instanceid, ctx.contextlevel,
ra.hidden,
r.id AS roleid, r.name as rolename,
u.id AS userid, u.firstname, u.lastname
FROM {$CFG->prefix}role_assignments ra
JOIN {$CFG->prefix}context ctx
ON ra.contextid = ctx.id
JOIN {$CFG->prefix}user u
ON ra.userid = u.id
JOIN {$CFG->prefix}role r
ON ra.roleid = r.id
LEFT OUTER JOIN {$CFG->prefix}course c
ON (ctx.instanceid=c.id AND ctx.contextlevel=".CONTEXT_COURSE.")
WHERE ( c.id IS NOT NULL";
// under certain conditions, $catctxids is NULL
if($catctxids == NULL){
$sql .= ") ";
}else{
$sql .= " OR ra.contextid IN ($catctxids) )";
}
$sql .= "AND ra.roleid IN ({$CFG->coursemanager})
$categoryclause
ORDER BY r.sortorder ASC, ctx.contextlevel ASC, ra.sortorder ASC";
Altere a string "ORDER BY" para:
ORDER BY u.lastname, r.sortorder ASC, ctx.contextlevel ASC, ra.sortorder ASC";
ou
ORDER BY u.firstname, r.sortorder ASC, ctx.contextlevel ASC, ra.sortorder ASC";
Válido para Moodle versão 1.9.5
Abraço!