Bonjour,
Nos enseignants utilisent beaucoup la duplication des questionnaires, nous avons donc également rencontré ce bug. Nous avions 12.300.000 entrées inutilement créées dans la base de données suivant cette requête:
SELECT q.id FROM mdl_question AS q
LEFT JOIN mdl_quiz_slots AS qslots ON q.id = qslots.questionid
WHERE qslots.questionid IS NULL AND q.qtype = 'random'
Votre discussion ici m'a bien aidé. J'ai donc testé le patch de Tim Hunt. En réalité il ne s'agit pas vraiment d'un patch mais plutôt d'une tâche planifié de nettoyage de la base de données. Les questionnaires sont toujours dupliqués mais la tâche planifiée
de Moodle (via le cron) efface petit à petit les questionnaires superflus, par lot de 10000 toutes les 12h par défaut (cfr. les "Tâches programmées" dans Moodle: "Nettoyage du questionnaire" - \mod_questionnaire\task\cleanup).
Autant dire que dans notre cas, ce patch n'a pas été suffisant, même en modifiant la fréquence de la tâche planifiée. J'ai donc appliqué cette requête directement en base de données pour supprimer d'une traite toutes les entrées en trop (backups réalisés au préalable):
DELETE FROM mdl_question
WHERE id IN
(
SELECT ids.id
FROM (
SELECT q.id
FROM mdl_question AS q
LEFT JOIN mdl_quiz_slots AS qslots ON q.id = qslots.questionid
WHERE qslots.questionid IS NULL AND q.qtype = 'random'
) ids
)
Au final, la duplication des questionnaires fonctionne à nouveau mais prend du temps, et de plus en plus de temps à chaque duplication jusqu'au prochain nettoyage par la tâche planifiée de Tim Hunt. La solution "long terme" proposée par Tim Hunt
semble être de supprimer le type de question "random": https://tracker.moodle.org/browse/MDL-64595 et le remplacer par un autre mode de fonctionnement: https://tracker.moodle.org/browse/MDL-61267
Nicolas