Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

par Séverin Terrier,
Nombre de réponses : 4
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

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

Moyenne des évaluations  -
En réponse à Séverin Terrier

Re: Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Séverin,
En lisant les informations de débogage, on dirait que les notes sont rattachés à des cours supprimés... Donc ça veut dire que la suppression des cours n'a pas détruit les notes en question ?! Sans doute un bug 🤨
Dans le Tracker, on trouve ça : https://tracker.moodle.org/browse/MDL-51694 et plus ou moins lié : https://tracker.moodle.org/browse/MDL-67720
À suivre,
Patrick
Moyenne des évaluations Utile (1)
En réponse à Patrick Lemaire

Re: Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Patrick,

Merci pour ta recherche et les liens indiqués.

J'ai du coup supprimé les éléments en trop (plus liés correctement). En espérant qu'un correctif sera intégré, afin d'éviter que de nouveaux problèmes ré-apparaissent au fil du temps.

Séverin
En réponse à Séverin Terrier

Re: Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

par Franck Pithois,
Bonjour Messieurs !
J'ai la même erreur et je suis en 3.5.
Je n'ai pas bien compris comment faire pour supprimer les comptes concernés par les notes de cours supprimés.
Je pense être dans le même cas et ne sais comment y remédier.
J'ai le même souci mais je ne peux pas intervenir directement sur la base... Uniquement via l'admin du site.
Merci pour votre aide !
Amicalement.
Franck
En réponse à Franck Pithois

Re: Moodle 3.7.4 - Synchro CAS avec suppression d'utilisateurs : erreurs

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour Franck,

Pour ma part, j'avais simplement créé un script unix contenant la commande souhaitée (php admin/tool/task/cli/schedule_task.php --execute='\auth_cas\task\sync_task'), et programmé un cron qui lançait cette tâche très régulièrement (toutes les 3 minutes si mes souvenirs sont bons), afin d'arriver au bout de mes suppressions de comptes.

Mais le plus simple aurait sans doute été de commencer par supprimer les notes qui n'avaient pas été supprimées correctement. C'est faisable en utilisant les requêtes indiquées dans MDL-51694.

Tu peux utiliser le plugin Adminer qui permet de lancer des requêtes sur la base de données interne de Moodle.

Ceci devrait te permettre de faire ton nettoyage de rentrée sourire
Séverin