ELIMINAR UNA ASISTENCIA registrada EN MOODLE

Por defecto, el plugin attendance de Moodle permite marcar 4 tipos de asistencias: Presente, Excused, Late y Absent. Si nos equivocamos al marcar la asistencia de una clase, podemos volver a la sesión y rectificar la asistencia del alumno seleccionando la que nos convenga. El problema viene cuando necesitamos eliminar, -o reiniciar-, la asistencia del alumno para que vuelva a su estado original.

El plugin attendance de Moodle no permite eliminar una asistencia para que deje de computar y no afecte a sus resultados académicos.

BORRAR LA ASISTENCIA DE UN ALUMNO EN MOODLE DESDE MYSQL

Este proceso se lleva a cabo mediante dos consultas SQL.

/*El borrado de la asistencia se realiza:*/
DELETE attendance_log FROM mdl_user u
LEFT JOIN mdl_attendance_log AS attendance_log ON attendance_log.studentid=u.id
LEFT JOIN mdl_attendance_statuses AS attstatus ON attendance_log.statusid=attstatus.id
LEFT JOIN mdl_attendance_sessions AS attsessions ON attendance_log.sessionid=attsessions.id
WHERE u.id=[USERID] AND FROM_UNIXTIME(attsessions.sessdate,'%Y-%m-%d') BETWEEN '[STARTDATE]' and '[ENDDATE]' and attstatus.acronym='[ATTENDANCE_STATUS]' and attendance_log.statusid=attstatus.id

En la consulta anterior necesitamos reemplazar los siguientes parámetros:

  • [USERID]= Se reemplaza por el id del usuario
  • [STARTDATE] y [ENDDATE]= Se reemplaza por las fechas de inicio y fin en formato americano
  • [ATTENDANCE_STATUS]= Se reemplaza por el valor del attendance que necesitamos borrar, pudiendo ser: A, P, E o L

Con la consulta anterior borramos la asistencia que necesitamos reiniciar pero este proceso no actualiza el apartado GRADES de Moodle. Para llevar a cabo la actualización de su evaluación necesitamos proceder a eliminarla de la siguiente manera:

/*El borrado de la evaluación: ATENCIÓN: SOLO SE REALIZA EN CASO DE QUERER ELIMINAR EL TOTAL DE LA NOTA DEL ALUMNO:*/
DELETE  mdl_grade_grades FROM mdl_user
INNER JOIN mdl_grade_grades ON mdl_grade_grades.userid=mdl_user.id
INNER JOIN mdl_grade_items ON mdl_grade_items.id=mdl_grade_grades.itemid
INNER JOIN mdl_course ON mdl_course.id=mdl_grade_items.courseid
WHERE mdl_grade_items.itemname='Attendance' AND mdl_user.id='[USERID]' AND mdl_course.id='[COURSEID]'

La consulta anterior solo debemos usarla para aquellos casos en que necesitemos borrar la nota completa de la asistencia de un alumno. En caso contrario, al registrar una nueva asistencia del alumno, la nota se actualizaría automáticamente.

Al igual que antes, la consulta anterior usa los siguientes parámetros:

  • [USERID]= Representa el número id del estudiante.
  • [COURSEID]= Representa el número id del curso sobre el que deseamos modificar valores.

Por último me gustaría terminar con una advertencia. Cualquier consulta de modificación sobre la base de datos de Moodle, hay que hacerla con mucha precaución porque Moodle utiliza otros cálculos externos a la base de datos y cualquier modificación sobre la misma, puede producir incoherencias.

Deja un comentario

Tu dirección de correo electrónico no será publicada.