Moodle 3.11 - Problème de désinscription d'utilisateurs inscrits par base de données

Moodle 3.11 - Problème de désinscription d'utilisateurs inscrits par base de données

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

Bonjour,

J'utilise depuis des années la méthode d'inscription par base de données, qui rend satisfaction, y compris jusqu'à présent, avec Moodle 3.7 (et via le script de synchronisation enrol/database/cli/sync.php).

En préparation de la nouvelle année universitaire, nous sommes (enfin) passés à Moodle 3.11.2.

Après suppression dans la table d'inscription des éléments concernant les étudiants, j'ai lancé la tâche programmée "Tâche de synchronisation des inscriptions par base de données externe" (\enrol_database\task\sync_enrolments) pour désinscrire les étudiants.

Malheureusement, dans les paramètres de l'inscription par base de données, pour effectuer la désinscription (enrol_database | unenrolaction), j'avais choisi "Désactiver l'inscription au cours et retirer l'attribution des rôles" au lieu de "Désinscrire du cours l'utilisateur").

Du coup, dans de nombreux cours, les étudiants sont encore présents, mais avec une inscription suspendue, et sans aucun rôle. Pour d'autres cours, ils ont bien été désinscrits. Je ne connais pas (encore) la raison de cette différence, et comment corriger cela...

J'ai essayé de remettre en place dans la table toutes les lignes correspondant aux inscriptions d'étudiants, afin de les ré-inscrire (en relançant la tâche programmée), pour pouvoir ensuite les désinscrire correctement. Mais malheureusement, ils n'ont pas été ré-inscrits correctement, mais sont toujours avec une inscription suspendue, et sans aucun rôle.

Si quelqu'un a une bonne idée pour régler mon problème, je suis preneur...

Séverin

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

Re: Moodle 3.11 - Problème de désinscription d'utilisateurs inscrits par base de données

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

Bon, ne perdez pas de temps à chercher... je vous fais un (très) résumé :

Comme il n'y avait plus de rôle attribué pour ces utilisateurs, et que l'inscription par base de données avait le statut "Suspendu" (status=1), j'ai supprimé les inscriptions d'utilisateur correspondantes, via cette requête :
DELETE ue
FROM mdl_user_enrolments ue, mdl_enrol e
WHERE e.enrol='database'
AND ue.enrolid=e.id
AND ue.status=1;
Et j'ai également relancé la tâche de synchronisation, par acquis de conscience.

Mais j'ai du le faire plusieurs fois, car je suis retombé sur l'erreur "error: skipping course 'IDNUMBER' - could not match with external database", rencontrée l'année dernière.

Séverin
Moyenne des évaluations Utile (1)
En réponse à Séverin Terrier

Re: Moodle 3.11 - Problème de désinscription d'utilisateurs inscrits par base de données

par Rudy Potdevin,
Avatar Moodleurs particulièrement utiles

Il n'y a pas de critère de recherche pour identifier les inscriptions inactives de façon globale. L'idéal serait de travailler par webservices. Sinon, une astuce violente serait de récupérer l'entièreté des identifiants utilisateurs et des identifiants de cours qui les concernent (via ta DB j'imagine). On peut ensuite utiliser l'importation par fichier pour réactiver toutes ces inscriptions (option enrolstatus à 0).

Attention toutefois, ça équivaut à ajouter une inscription manuelle supplémentaire aux cours pour tous les utilisateurs. Ce qui peut être contrecarré par l'utilisation de l'option enrolperiod réglée à 1. Cette inscription manuelle disparaîtra le lendemain mais l'inscription par DB sera toujours active.

C'est tordu mais c'est facile à appliquer.