Bonjour,
Nous utilisons actuellement Moodle 3.7.4 avec l'authentification CAS (couplée à un annuaire LDAP).
Voulant faire un peu de ménage dans notre base d'utilisateurs, j'ai configuré dans l'authentification CAS la "Synchronisation des comptes utilisateur" sur "Supprimer complètement l'utilisateur interne", de façon à supprimer les utilisateurs qui n'existent plus dans l'annuaire.
Lorsque j'essaie de supprimer des utilisateurs (par lot), que ce soit via l'interface (Administration du site > Utilisateurs > Comptes > Actions en lots sur les utilisateurs) ou via la tâche de synchronisation des comptes (php admin/tool/task/cli/schedule_task.php --execute='\auth_cas\task\sync_task'), j'ai des erreurs lors de la suppression de certains comptes :
Scheduled task failed: Synchronisation des utilisateurs CAS (auth_cas\task\sync_task),Impossible de trouver l'enregistrement de données dans la table course de la base de données.
Debug info:
SELECT id,category FROM {course} WHERE id IS NULL
[array (
)]
Backtrace:
* line 1538 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
* line 6827 of /lib/accesslib.php: call to moodle_database->get_record()
* line 70 of /lib/classes/event/grade_deleted.php: call to context_course::instance()
* line 1119 of /lib/grade/grade_grade.php: call to core\event\grade_deleted::create_from_grade()
* line 1532 of /lib/gradelib.php: call to grade_grade->delete()
* line 4209 of /lib/moodlelib.php: call to grade_user_delete()
* line 780 of /auth/ldap/auth.php: call to delete_user()
* line 319 of /auth/cas/auth.php: call to auth_plugin_ldap->sync_users()
* line 50 of /auth/cas/classes/task/sync_task.php: call to auth_plugin_cas->sync_users()
* line 157 of /admin/tool/task/cli/schedule_task.php: call to auth_cas\task\sync_task->execute()
Je dois avouer que je n'ai pas vraiment compris lesquels, ni pourquoi. Par contre, c'est apparemment lié à des notes, dont la suppression poserait problème.
J'ai donc fais un script dédié pour lancer cette tâche en boucle, en conservant la sortie d'exécution dans un fichier, jusqu'à arriver à supprimer tous les comptes nécessaires.
Séverin