Posible corrección de código - v.1.9

Posible corrección de código - v.1.9

de Eder dos Santos -
Número de respuestas: 2
Estimados:

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:

  1. El archivo index.php invoca el método print_my_moodle(), que se encuentra en lib.php;
  2. Este método incluye a get_my_courses(), de datalib.php; y
  3. 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.
El método print_course posee la linea a continuación (en mi versión, linea 2092):
$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
Promedio de valoraciones: -
En respuesta a Eder dos Santos

Re: Posible corrección de código - v.1.9

de Jorge Malaga -España -
Hola Eder:

La cuestion es que si al realizar el cambio en el código, funciona. Si es asi y no afecta al funcionamiento global del sistema, quiere decir que el cambio realizado en el código es correcto y es de utilidad.

Aún asi y es mi opinión, creo que mas que un bug es que has necesitado personalizar el codigo para que, como tu bien comentas, te muestre los profesores ordenado según los privilegios que tienen y no como lo hace en una instalación por defecto (que tambien lo hace, pero a su manera).

No se si es correcto, indicarlo como un bug, pues la funcion en si no contiene errores. Otro tema es que al personalizar moodle nos encontremos con que hay que modificar el codigo para ciertos aspectos. Creo que esto nos ha pasado a la mayoría.

Por otro lado, esto es lo bueno del OpenSource...Sientase libre de modificar el código y si realiza alguna mejora de utilidad, compartala para el beneficio de la comunidad.

Un saludo.
En respuesta a Jorge Malaga -España

Re: Posible corrección de código - v.1.9

de Eder dos Santos -
Hola, Jorge. Gracias por el feedback. ;)

En mi caso, si funciona, y he entendido porque. Por ello, he abierto este post.

Comentando un poco más, por si le interesa a alguien.

He encontrado este detalle en la sección "Mis cursos". He observado que la consulta toma el orden de roles, por lo que da a entender que este criterio de ordenamiento es valido si se quiere mostrar responsables con roles distintos, cuando en verdad necesitaría configurar el orden de los profes que aparecen en cada curso, dado que algunos profesores son responsables de un espacio curricular y otros profesores son auxiliares.

En todo caso, crear distintos roles (ej. Profesor 1Responsable y Profesor Auxiliar) y configurar que estos sean mostrados en la lista de profesores de los cursos es una sugerencia que se podría adaptar al código actual, y el resultado vendría a ser el esperado. Pero particularmente, lo veo más complejo para mantenerlo, a principio.

Sin embargo, hay otra cuestión relacionada con esto que pronto abriré otro post para no mezclar los hilos.

Saludos,
Eder