Buenas! Me he fijado y las tablas, mdl_question_attempts, mdl_question_attempts_steps, mdl_question_attempts_steps_data
son de las
tablas mas grandes y que mas ocupan en la base de datos. quiero mantener un
poco controlado sus tamaños y había pensado en hacer limpieza de los intentos
de los exámenes (un alumno puede intentar varias veces el examen).
La idea es hacer limpieza de los intentos del alumno y dejar solo la que mas
nota tiene. No he encontrado nada en moodle que me permita hacerlo
automáticamente, ¿Alguien ha tenido este problema? ¿Tenéis alguna solución?
Había pensado en hacer un script para automatizar este proceso, y ejecutarlo una vez al año cuando termina el curso. Lo malo es que de programación ando algo perdido, hace años que aprendí algo y lo tengo un poco olvidado. Pongo aqui un poco las ideas que tengo de como hacerlo y a ver si alguien puede echarme una mano.
Hacer una consulta en la tabla mdl_quiz_attempts, algo asi:
SELECT * FROM `mdl_quiz_attempts` WHERE `state` = "finished" ORDER BY `userid` ASC, `quiz` ASC, `sumgrades` DESC
guardando la consulta en una variable ($table), luego recorrer la variable y hacer una comprobacion del estilo:
for ($x=0;$x<count($table); $x++){
if ( $table[i][userid] = $table[i+1][userid] & $table[i][quiz] = $table[i+1][quiz] ){
//aqui se compara si la siguiente fila es el mismo alumno y el mismo examen
quiz_delete_attempt($table[i+1][$attempt],
$table[i+1][$quiz]);
//esta funcion esta en /mod/quiz/locallib.php . Elimina el intento. La consulta esta hecha para que ordene la nota mas alta en primer lugar por lo que los siguientes en orden serian con menor nota.
}
}