Les cuento que encuentro algo raro en un código de Moodle, y creo que sería una sugerencia de corrección.
Cuando el usuario se autentifica en el sitio, le es mostrado una lista de sus cursos, y los respectivos profesores. Sin embargo, en nuestra institución, tenemos un tema: algunos profesores son Responsables y otros son Auxiliares, por lo que hemos utilizado el atributo sortorder de la tabla role_assignments, con el ánimo de mostrar primero los profes Responsables en la sección Mis Cursos.
Sin embargo, esto no ha resuelto el tema, por lo que empecé a depurar el código. Y he encontrado que:
- El archivo index.php invoca el método print_my_moodle(), que se encuentra en lib.php;
- Este método incluye a get_my_courses(), de datalib.php; y
- Con cada curso obtenido invoca el método print_course(), que se encuentra en lib.php. Creo que EN ESTE PUNTO se encuentra el problema.
$rusers = get_role_users($managerroles, $context, true, '', 'r.sortorder DESC, u.lastname ASC', $canseehidden);
Observando el método get_role_users (que se encuentra en accesslib.php), recibe <<r.sortorder>> como parámetro para ordenar los registros, sin embargo, la tabla mencionada como <<r>> es la tabla <<mdl_role>>, y no la tabla <<mdl_role_assignments>>, conforme visto a continuación:
accesslib.php -> Línea 5053 (function get_role_users)
$SQL = "SELECT $fields, ra.roleid
FROM {$CFG->prefix}role_assignments ra
JOIN {$CFG->prefix}user u
ON u.id = ra.userid
JOIN {$CFG->prefix}role r
ON ra.roleid = r.id
Considero que el script está incorrecto, pues debería obtener el orden por los roles asignados en el contexto de cada curso (vía mdl_role_assignments), y por ello he cambiado el parámetro r.sortorder por ra.sortorder:
$rusers = get_role_users($managerroles, $context, true, '', 'ra.sortorder DESC, u.lastname ASC', $canseehidden);
Esto es cierto? Que opinan?
Saludos,
Eder