« Inscription par base de données externe » : différence entre les versions

De MoodleDocs
Aller à :navigation, rechercher
(→‎Script de synchronisation : Adaptation pour le changement induit par M3.7)
 
(17 versions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Traduction}}{{Inscription}}
{{Inscription}}
==Utilisation d'une base de données externe pour gérer les inscriptions ==
==Utilisation d'une base de données externe pour gérer les inscriptions ==


Ligne 55 : Ligne 55 :
#'''"Garder l'utilisateur inscrit"''' Quand un utilisateur disparaît de la source externe, l'inscription est gardée telle quelle, et l'utilisateur sera toujours en mesure d'accéder au cours, de consulter les ressources, de participer aux activités, etc. C'est une option de type "ne rien faire".
#'''"Garder l'utilisateur inscrit"''' Quand un utilisateur disparaît de la source externe, l'inscription est gardée telle quelle, et l'utilisateur sera toujours en mesure d'accéder au cours, de consulter les ressources, de participer aux activités, etc. C'est une option de type "ne rien faire".
#'''"Désactiver l'inscription au cours"''' Quand un utilisateur disparaît de la source externe, l'inscription de l'utilisateur est suspendue (l'utilisateur n'accède plus au cours mais ses données et ses paramétrages sont conservés), et les rôles sont gardés tels quels. Vous pouvez avoir besoin de cette option parce que dans certains cas, l'utilisateur a besoin d'un rôle avec certaines capacités afin d'être visible dans les interfaces utilisateur comme le carnet de notes, les rendus de devoirs, etc.
#'''"Désactiver l'inscription au cours"''' Quand un utilisateur disparaît de la source externe, l'inscription de l'utilisateur est suspendue (l'utilisateur n'accède plus au cours mais ses données et ses paramétrages sont conservés), et les rôles sont gardés tels quels. Vous pouvez avoir besoin de cette option parce que dans certains cas, l'utilisateur a besoin d'un rôle avec certaines capacités afin d'être visible dans les interfaces utilisateur comme le carnet de notes, les rendus de devoirs, etc.
#'''"Désactiver l'inscription au cours et retirer l'attribution des rôles"''' When the user disappears from the external source, the enrolment is suspended and roles assigned by enrol instance are removed. Please note that user may "disappear" from gradebook and other areas.
#'''"Désactiver l'inscription au cours et retirer l'attribution des rôles"''' Quand un utilisateur disparaît de la source externe, l'inscription est suspendue et les rôles attribués par le processus d'inscription sont supprimés. Veuillez noter que l'utilisateur peut "disparaître" du carnet de notes et d'autres interfaces utilisateur.


== Création de cours ==
== Création de nouveaux cours ==


Optionally courses that do not exist in the Moodle site can be created.
Vous avez la possibilité de créer automatiquement les cours qui n'existent pas encore sur votre plateforme Moodle.


You can additionally specify the Category into which the new course will be placed, in the '''New course category id field'''. The data in this field must be the id of a currently existing category; it will not create a new category. The id number is number assigned by Moodle in the database when the category is created (e.g. mdl_course_categories.id).
Vous pouvez également spécifier la catégorie dans laquelle le nouveau cours sera placé, au niveau du paramètre ''Champ catégorie des nouveaux cours'' (enrol_database | newcoursecategory). Les données de ce champ doivent correspondre à l'id d'une catégorie existante. Cette option ne créera pas de nouvelle catégorie. L'id d'une catégorie représente le numéro attribué par Moodle lors de la création de la catégorie (voir le champ id de la table ''mdl_course_categories'' dans la base de données de Moodle)


* Do not confuse this ''category id'' with the new custom ''category id number'' field that you can manually assign to a category. (See Trackers http://tracker.moodle.org/browse/MDL-28518 and http://tracker.moodle.org/browse/MDL-31845).  
* Ne confondez pas l'id de la catégorie avec le champ ''Numéro d'identifiant de catégorie'' que vous pouvez affecter manuellement à une catégorie. (Voir les liens du tracker [http://tracker.moodle.org/browse/MDL-28518] et [http://tracker.moodle.org/browse/MDL-31845]).  
* Leaving the category id data empty means that a course will be assigned to the default category.
* Si vous laissez ce champ vide, cela signifie que le cours sera placé dans la catégorie par défaut.
* If you assign data to categories that do  not exist already in Moodle, the courses will not be created.
* Si vous remplissez ce champ avec une catégorie qui n'existe pas, Les cours ne seront pas créés.


'''Default new course category''' is the category to which courses will be assigned and created in, unless you set up and so indicate in the data field of the "New course category id field."
L'option ''Catégorie par défaut des nouveaux cours'' (enrol_database | defaultcategory) est la catégorie dans laquelle les cours seront assignés et créés, sauf si vous avez configuré et rempli le champ ''Champ catégorie des nouveaux cours''.


You may also specify a '''New course template''': a "template" course from which the new course will be copied. The data for this field should be the ''shortname'' of the template course.
Enfin, vous pouvez également spécifier un modèle pour les cours créés grâce à l'option ''Modèle des nouveaux cours'' (enrol_database | templatecourse). Ce champ doit comporter le '''Nom abrégé du cours''' du cours modèle existant.


== Synchronization script ==
== Synchronisation des inscriptions (tâche programmée et script CLI) ==


A script is provided that can synchronize all your user enrollments at once - both adding and removing user enrolments (and creating courses if specified). The script is called sync.php and is found in the enrol/database/cli folder.
{{Moodle 3.7}}Depuis Moodle 3.7, le script en ligne de commande (CLI) est déprécié à la faveur d'une tâche programmée dédiée (si la tâche programmée est activée, le script ne fera rien).


This script is meant to be called from a system cronjob to sync moodle enrolments with enrolments in the external database. You need to make sure all the users present in the external enrolments are already created in moodle. If you are using external authentication plugins (db, ldap, etc.) you can use the scripts provided by those plugins to synchronize your users before running this script.
Le script est fourni vous permettant de synchroniser toutes vos inscriptions d'utilisateurs à la fois - en ajoutant et en supprimant des inscriptions d'utilisateurs (et en créant des cours si l'option est spécifiée). Le script s'appelle sync.php et se trouve dans le dossier '''enrol/database/cli'''.


Example cron entry
Ce script doit être appelé depuis un cronjob pour synchroniser les inscriptions Moodle avec celles de la base de données externe. Vous devez vous assurer que tous les utilisateurs présents dans la source de données externe soient déjà créés dans Moodle. Si vous utilisez des méthodes d'authentification externes (db, ldap, cas, etc), vous pouvez utiliser les scripts fournis par celles-ci pour synchroniser vos utilisateurs avant d’exécuter ce script.
     # 5 minutes past 4am
 
Exemple d'entrée dans la crontab :
     # Exécution tous les jours à 4H05
     5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php
     5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php


Notes:
Notes:
* If you have a large number of enrolments, you may want to raise the memory limits by passing -d memory_limit=256M
* Si vous avez un grand nombre d’inscriptions à faire, vous pouvez augmenter la mémoire allouée au script en passant le paramètre -d memory_limit = 256M
* For debugging & better logging, you are encouraged to use in the command line: -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
* Pour le débogage et une meilleure journalisation, nous vous encourageons à utiliser la ligne de commande avec les options suivantes : -d log_errors = 1 -d error_reporting = E_ALL -d display_errors = 0 -d html_errors = 0
* This only works for users that already exist in your Moodle site (see comment above)
* Ce script ne fonctionne que si les utilisateurs existent déjà dans votre plateforme Moodle (voir commentaire plus haut)


== Setting up enrolment sync (How to) ==
== Paramétrage d'une inscription synchronisée (Comment procéder) ==


You will need to perform (as a minimum) the following steps to enable external database enrolment - only a single table is required in the database which contains a record for every user/course combination. If the table is large it is a good idea to make sure appropriate indexes have been created:
Vous devez (au minimum) suivre les étapes suivantes pour activer l'inscription à la base de données externe - une seule table est requise dans la base de données. Celle-ci contient un enregistrement pour chaque combinaison utilisateur / cours. Si la table est volumineuse, il est conseillé de s’assurer que les index appropriés ont été créés :


* Use an existing database or create a new one. Use an existing table or create a new one with the following minimum fields.
* Utilisez une base de données existante ou créez-en une nouvelle. Utilisez une table existante ou créez-en une nouvelle avec les champs minimum suivants :
*# A unique course identifier to match one of the following fields.
*# Un identifiant de cours unique correspondant à l'un des champs suivants :
*#* the "idnumber" field in Moodle's course table (varchar 100), which is manually specified as the "Course ID number" when editing a course's settings
*#* le champ "idnumber" dans la table des cours de Moodle (varchar 100), qui est spécifié manuellement comme ''N° d'identification du cours'' lors de l'édition des paramètres du cours
*#* the "shortname" field in Moodle's course table (varchar 255), which is manually specified as the "Course short name" when editing a course's settings
*#* le champ "shortname" dans la table des cours de Moodle (varchar 255), qui est spécifié manuellement comme ''Nom abrégé du cours'' lors de l'édition des paramètres du cours
*#* the "id" field in Moodle's course table (int 10), which is based on course creation order
*#* le champ "id" dans la table des cours de Moodle (int 10), qui est créé automatiquement par Moodle en fonction de l'ordre de création des cours
*# A unique user identifier to match one of the following fields.
*# Un identifiant utilisateur unique correspondant à l'un des champs suivants :
*#* the "idnumber" field in Moodle's user table (varchar 255), which is manually specified as the "ID number" when editing a user's profile
*#* le champ "idnumber" dans la table des utilisateurs de Moodle (varchar 255), qui est spécifié manuellement comme ''Numéro d'identification'' lors de l'édition du profil de l'utilisateur
*#* the "username" field in Moodle's user table (varchar 100), which is manually specified as the "Username" when editing a user's profile
*#* le champ "username" dans la table des utilisateurs de Moodle (varchar 100), qui est spécifié manuellement comme ''Nom d'utilisateur'' lors de l'édition du profil de l'utilisateur
*#* the "email" field in Moodle's user table (varchar 100), which is manually specified as the "Email address" when editing a user's profile
*#* le champ "email" dans la table des utilisateurs de Moodle (varchar 100), qui est spécifié manuellement comme ''Adresse du courriel'' lors de l'édition du profil de l'utilisateur
*#* the "id" field in Moodle's user table (int 10), which is based on user creation order
*#* le champ "id" dans la table des utilisateurs de Moodle (int 10), qui est créé automatiquement par Moodle en fonction de l'ordre de création des utilisateur
*# (optional) A unique role identifier to match one of the following fields.
*# (optionnel) Un identifiant de rôle unique correspondant à l'un des champs suivants :
*#* the "shortname" field in Moodle's role table (varchar 100), for example editingteacher, coursecreator, student, ...
*#* le champ "shortname" dans la table des rôles de Moodle (varchar 100), par exemple editingteacher, coursecreator, student, ...
*#* the "name" field in Moodle's role table (varchar 255), for example Teacher, Course creator, Student, ...
*#* le champ "name" dans la table des rôles de Moodle (varchar 255), par exemple Enseignant, Créateur de cours, Etudiant, ...
*#* the "id" field in Moodle's role table (int 10), which is based on initial installation and new role creation order
*#* le champ "id" dans la table des rôles de Moodle (int 10), qui est basé selon l'installation initiale et l'ordre de création de nouveaux rôles
* Populate the database table. Each user/course combination to have a record in the table.
* Remplissez la table de la base de données. Chaque combinaison utilisateur / cours doit avoir un enregistrement dans la table.
* In Moodle, go to ''Site administration > Plugins > Enrolments > Manage enrol plugins'', find External Database in the list, enable it (click the closed-eye icon) and click Settings.
* Dans Moodle, rendez-vous dans ''Administration du site > Plugins > Inscriptions > Gérer les plugins d'inscriptions'', repérez ''Base de données externe'' dans la liste, activez-le (cliquez sur l'icône de l’œil fermé) et cliquez sur ''paramètres''
* In the top panel, select the database type (make sure you have the necessary configuration in PHP for that type) and then supply the information to connect to the database.
* Dans le panneau ''Connexion de la base de données externe'', sélectionnez le pilote de base de données (assurez-vous que vous disposez de la configuration PHP requise pour ce pilote) et renseignez le paramètre afin de se connecter à la base de données.
* The middle panel creates the mapping between Moodle and the external database. The first three settings are for the local (Moodle) field names and the last three for the remote (external database) settings. They are in the same order.
* Le panneau ''Correspondance des champs locaux'' crée le mappage entre Moodle et la base de données externe. Les trois premiers paramètres concernent les noms de champs locaux (Moodle) et les trois derniers, les paramètres distants (base de données externe). Ils sont dans le même ordre.
** enrol_localcoursefield / enrol_remotecoursefield - in Moodle the name of the field in the course settings the uniquely identifies the course (e.g., idnumber). In the external database the name of the matching field.
** enrol_localcoursefield / enrol_remotecoursefield - dans Moodle, le nom du champ dans les paramètres du cours qui identifie de manière unique le cours (par exemple, idnumber). Dans la base de données externe, le nom du champ correspondant.
** enrol_localuserfield / enrol_remoteuserfield - in Moodle the name of the field in the user profile that uniquely identified the user (e.g., idnumber). In the external database the name of the matching field.
** enrol_localuserfield / enrol_remoteuserfield - dans Moodle le nom du champ dans le profil utilisateur qui identifie l'utilisateur de manière unique (par exemple, idnumber). Dans la base de données externe, le nom du champ correspondant.
** enrol_db_localrolefield / enrol_db_remoterolefield - (optional) in Moodle the name of the field in the role edit page the uniquely identifies the role (e.g., shortname). In the external database the name of the matching field.
** enrol_db_localrolefield / enrol_db_remoterolefield - (facultatif) dans Moodle le nom du champ dans la page d'édition du rôle qui identifie de manière unique le rôle (par exemple, le nom abrégé). Dans la base de données externe, le nom du champ correspondant.
* The Roles panel specifies the role that the user will get in the course if their role is not specified in the external database.
* L'option ''Rôle par défaut'' spécifie le rôle que l'utilisateur obtiendra dans le cours si son rôle n'est pas spécifié dans la base de données externe.
* A new optional field enrol_database | remoteotheruserfield allows those with the role "Other users" to be added but not to be included as course participants.
* Un nouveau champ optionnel ''Champ distant Autre utilisateur'' (enrol_database | remoteotheruserfield) permet aux utilisateurs ayant le rôle "Autres utilisateurs" d'être ajoutés mais non inclus en tant que participants au cours.
* The final panel enables auto creation of courses.
* Le dernier panneau permet d'activer la création automatique de nouveaux cours.
* Save changes, and then tick the box to enable external database enrolment.
* Enregistrez les modifications. N'hésitez pas à tester vos paramètres de connexion en cliquant sur ''Réglages de test'' dans la page de configuration des plugins d'inscription de Moodle.


== Field Mapping Example: ==
== Exemple de correspondance de champs ==
Choose your fields from the Moodle database:
Choisissez vos champs dans la base de données Moodle :


*enrol_localcoursefield:  A course identifier from mdl_course, e.g. "idnumber"
*enrol_localcoursefield:  un identifiant de cours de la table mdl_course, par exemple "idnumber"
*enrol_localuserfield: A user identifier from mdl_user, e.g. "idnumber"
*enrol_localuserfield: un identifiant d'utilisateur de la table mdl_user, par exemple "idnumber"
*enrol_localrolefield: (optional) A role identifier from mdl_role, e.g. "shortname"
*enrol_localrolefield: (optionnel) un identifiant de rôle de la table mdl_role, par exemple "shortname"


Create a view in your external database which matches the chosen field values from Moodle:
Créez une vue dans votre base de données externe qui correspond aux valeurs de champ choisies dans Moodle :


*enrol_remotecoursefield: A matching course identifier from your external database table, e.g. "course_number"
*enrol_remotecoursefield: un identifiant de cours correspondant à votre table de base de données externe, par exemple. "course_number"
*enrol_remoteuserfield: A matching user identifier from your external database table, e.g. "userid"
*enrol_remoteuserfield: un identifiant d'utilisateur correspondant à votre table de base de données externe, par exemple. "userid"
*enrol_remoterolefield: (optional) A matching role identifier from your external database table, e.g. "role_name"
*enrol_remoterolefield: (optionnel) un identifiant de rôle correspondant à votre table de base de données externe, par exemple. "rolename"


== Potential gotchas ==
== Risques potentiels ==


* It almost goes without saying that the integrity of the external database is important. If data is missing from the database then there is a potential for users being unenrolled from some or all of their courses. The unenrollment process will remove them from any group assignments and also poll each module type to give the module the option of removing that user's data if appropriate (for example, however, forum posts are never deleted). It is therefore prudent that you take the utmost care to ensure that the data in the external database is correct at all times.
* Il va de soi que l'intégrité des données de votre base de données est importante. Si des données sont manquantes dans la base de données, il est possible que des utilisateurs ne soient pas inscrits à certains ou à tous leurs cours. Le processus de désinscription les supprime de toute affectation de groupe et interroge chaque type de module pour permettre au module de supprimer les données de cet utilisateur, le cas échéant (par exemple, les publications de forum ne sont jamais supprimées). Il est donc prudent de veiller à ce que les données de la base de données externe soient constamment valides.
* '''Minor Security Issue''' Consider that if the ID number field you use to identify your students is editable by the students (in their profile), then there is a potential for them changing this to the id of another valid student and gaining access to resources that they should not. (However, they will still appear as themselves, they cannot impersonate the other user or otherwise gain access to their resources.) To prevent this and similar issues, you can lock the ID number as well as other fields so the user can not change them. Do this in the '''Data mapping''' section of ''Site administration > Plugins > Authentication > External database''.
* '''Problème de sécurité mineur''' Considérez que si le champ du numéro d'identification que vous utilisez pour identifier vos étudiants est modifiable par les étudiants (dans leur profil), il est possible qu'ils remplacent ce numéro par l'identifiant d'un autre étudiant valide et obtiennent ainsi un accès à des ressources dont ils ne devraient pas. (Cependant, Ils apparaîtront toujours comme "eux-mêmes", ils ne pourront pas usurper l'identité de l'autre utilisateur ou accéder à ses ressources.) Pour éviter ce problème et des problèmes similaires, vous pouvez verrouiller le champ "Numéro d'identification" ou tout autre champs choisis afin que l'utilisateur ne puisse pas les modifier. Rendez-vous dans les paramètres de la méthode d'authentification utilisée pour verrouiller les champs nécessaires.


==Errors and diagnostics==
==Erreurs et diagnostics==


The plugin produces a number of diagnostic messages and/or errors which are recorded to the PHP error log (as defined in the php.ini file). In addition messages about courses that are in the database for the user but that do not exist in the Moodle site will only be produced if debugging is set to ALL or DEVELOPER.
Le plugin génère un certain nombre de messages de diagnostic et / ou d’erreurs qui sont enregistrés dans le journal des erreurs PHP (comme défini dans le fichier php.ini). De plus, les messages sur les cours qui sont dans la base de données pour l'utilisateur mais qui n'existent pas sur le site Moodle ne seront générés que si le débogage est défini sur ALL ou DEVELOPER.


You can get detailed progress information by executing the sync script  with -v parameter:
Vous pouvez obtenir des informations de progression détaillées en exécutant le script de synchronisation (sync.php) avec le paramètre -v :


<code>
<code>
Ligne 144 : Ligne 146 :
</code>
</code>


==See also==
==Voir aussi==


*[http://moodle.org/mod/forum/discuss.php?d=74133 Someone explain external database enrolment, please??] forum discussion
*[http://moodle.org/mod/forum/discuss.php?d=74133 Someone explain external database enrolment, please??] forum discussion
*Example Setup [https://docs.moodle.org/en/Talk:External_database_enrolment#Example_External_Enrollment] Example Database Enrollment Setup
*Exemple de configuration [https://docs.moodle.org/en/Talk:External_database_enrolment#Example_External_Enrollment] Example Database Enrollment Setup
*[[External database authentication]]
*[[External database authentication]]


[[en:External database enrolment]]
[[es:Inscripción por BasedeDatos externa]]
[[es:Inscripción por BasedeDatos externa]]
[[fr:Inscription par base de données externe]]
[[de:Einschreibung über externe Datenbank]]
[[de:Einschreibung über externe Datenbank]]
[[ja:外部データベース登録]]
[[ja:外部データベース登録]]

Dernière version du 24 février 2020 à 10:09

Utilisation d'une base de données externe pour gérer les inscriptions

Vous pouvez utiliser une base de données externe (de presque tout type) pour gérer vos inscriptions. Votre base de données doit contenir au moins un champ contenant un ID de cours, un champ contenant un ID d'utilisateur et éventuellement un champ contenant un rôle. Ceux-ci sont comparés à ceux que vous avez choisis pour les options Champ cours local (enrol_database | localcoursefield), Champ utilisateur local (enrol_database | localuserfield) et Champ rôle local (enrol_database | localrolefield) dans la page de paramétrage du plugin.

Voici les sources de données prises en charge, mais notez que vous devrez compiler PHP avec les options appropriées ou via ODBC.

  • access
  • ado
  • mssql
  • borland_ibase
  • csv
  • db2
  • fbsql
  • firebird
  • ibase
  • informix72
  • informix
  • mysql (déprécié, merci d'utiliser mysqli à la place)
  • mysqli
  • mysqlt
  • oci805
  • oci8
  • oci8po
  • odbc
  • odbc_mssql
  • odbc_oracle
  • oracle
  • postgres64
  • postgres7
  • postgres
  • proxy
  • sqlanywhere
  • sybase
  • vfp

Inscription et désinscription

L'inscription par base de données externe se passe au moment ou un utilisateur se connecte à Moodle. Le plugin tentera d'inscrire automatiquement l'étudiant dans tous ses cours en fonction des données issues de la base de données externe et, éventuellement, de créer des cours vides lorsqu'ils n'existent pas déjà. Pour vérifier si cela fonctionne, vous pouvez vous connecter en tant qu'étudiant, puis vérifier que sa liste de cours est conforme à vos attentes.

Le processus désinscrit également les utilisateurs des cours s’ils ne figurent plus dans la base de données externe. Les enregistrements des utilisateurs sont marqués en fonction de leur méthode d'inscription originale. Par conséquent, le plugin d'inscription par base de données externe peut uniquement désinscrire des utilisateurs qui ont été inscrits par celui-ci.

Cours cachés

Les cours qui ont été cachés aux étudiants peuvent être ignorés par le processus d'inscription en paramétrant l'option Ignorer les cours cachés (enrol_db_ignorehiddencourse) à Oui.

Inscriptions et rôles

L'option Rôle par défaut (enrol_database | defaultrole) sur la page de paramétrage du plugin permet de spécifier le rôle attribué à l’utilisateur lorsqu'il sera ajouté au cours. Le paramètre par défaut les définira sur le paramètre par défaut du cours (initialement "étudiant"). Toutefois, vous pouvez spécifier un champ dans la table externe (spécifiée dans le paramètre Champ rôle de la base de données externe (enrol_database | remoterolefield) ) contenant le nom abrégé ou l'ID du rôle de l'utilisateur. Cela pourrait, par exemple, être utilisé pour inscrire des étudiants et des enseignants à des cours utilisant une base de données configurée de manière appropriée.

Désinscription

L'option Action de désinscription externe (enrol_database | unenrolaction) dans la page de paramétrage du plugin permet de définir quel sera l'action lorsqu'un utilisateur est désinscrit de la base de données externe. Chaque paramètre fait ce qui suit :

  1. "Désinscrire du cours l'utilisateur" Quand un utilisateur disparaît de la source externe, l'inscription est supprimée ainsi que l'ensemble des rôles de l'utilisateur. Cela signifie que certaines données de l'utilisateur sont supprimées du cours pendant la désinscription (cela inclue les notes, les tentatives aux tests, etc.)
  2. "Garder l'utilisateur inscrit" Quand un utilisateur disparaît de la source externe, l'inscription est gardée telle quelle, et l'utilisateur sera toujours en mesure d'accéder au cours, de consulter les ressources, de participer aux activités, etc. C'est une option de type "ne rien faire".
  3. "Désactiver l'inscription au cours" Quand un utilisateur disparaît de la source externe, l'inscription de l'utilisateur est suspendue (l'utilisateur n'accède plus au cours mais ses données et ses paramétrages sont conservés), et les rôles sont gardés tels quels. Vous pouvez avoir besoin de cette option parce que dans certains cas, l'utilisateur a besoin d'un rôle avec certaines capacités afin d'être visible dans les interfaces utilisateur comme le carnet de notes, les rendus de devoirs, etc.
  4. "Désactiver l'inscription au cours et retirer l'attribution des rôles" Quand un utilisateur disparaît de la source externe, l'inscription est suspendue et les rôles attribués par le processus d'inscription sont supprimés. Veuillez noter que l'utilisateur peut "disparaître" du carnet de notes et d'autres interfaces utilisateur.

Création de nouveaux cours

Vous avez la possibilité de créer automatiquement les cours qui n'existent pas encore sur votre plateforme Moodle.

Vous pouvez également spécifier la catégorie dans laquelle le nouveau cours sera placé, au niveau du paramètre Champ catégorie des nouveaux cours (enrol_database | newcoursecategory). Les données de ce champ doivent correspondre à l'id d'une catégorie existante. Cette option ne créera pas de nouvelle catégorie. L'id d'une catégorie représente le numéro attribué par Moodle lors de la création de la catégorie (voir le champ id de la table mdl_course_categories dans la base de données de Moodle)

  • Ne confondez pas l'id de la catégorie avec le champ Numéro d'identifiant de catégorie que vous pouvez affecter manuellement à une catégorie. (Voir les liens du tracker [1] et [2]).
  • Si vous laissez ce champ vide, cela signifie que le cours sera placé dans la catégorie par défaut.
  • Si vous remplissez ce champ avec une catégorie qui n'existe pas, Les cours ne seront pas créés.

L'option Catégorie par défaut des nouveaux cours (enrol_database | defaultcategory) est la catégorie dans laquelle les cours seront assignés et créés, sauf si vous avez configuré et rempli le champ Champ catégorie des nouveaux cours.

Enfin, vous pouvez également spécifier un modèle pour les cours créés grâce à l'option Modèle des nouveaux cours (enrol_database | templatecourse). Ce champ doit comporter le Nom abrégé du cours du cours modèle existant.

Synchronisation des inscriptions (tâche programmée et script CLI)

Nouveauté
Moodle
3.7
Depuis Moodle 3.7, le script en ligne de commande (CLI) est déprécié à la faveur d'une tâche programmée dédiée (si la tâche programmée est activée, le script ne fera rien).

Le script est fourni vous permettant de synchroniser toutes vos inscriptions d'utilisateurs à la fois - en ajoutant et en supprimant des inscriptions d'utilisateurs (et en créant des cours si l'option est spécifiée). Le script s'appelle sync.php et se trouve dans le dossier enrol/database/cli.

Ce script doit être appelé depuis un cronjob pour synchroniser les inscriptions Moodle avec celles de la base de données externe. Vous devez vous assurer que tous les utilisateurs présents dans la source de données externe soient déjà créés dans Moodle. Si vous utilisez des méthodes d'authentification externes (db, ldap, cas, etc), vous pouvez utiliser les scripts fournis par celles-ci pour synchroniser vos utilisateurs avant d’exécuter ce script.

Exemple d'entrée dans la crontab :

   # Exécution tous les jours à 4H05
   5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php

Notes:

  • Si vous avez un grand nombre d’inscriptions à faire, vous pouvez augmenter la mémoire allouée au script en passant le paramètre -d memory_limit = 256M
  • Pour le débogage et une meilleure journalisation, nous vous encourageons à utiliser la ligne de commande avec les options suivantes : -d log_errors = 1 -d error_reporting = E_ALL -d display_errors = 0 -d html_errors = 0
  • Ce script ne fonctionne que si les utilisateurs existent déjà dans votre plateforme Moodle (voir commentaire plus haut)

Paramétrage d'une inscription synchronisée (Comment procéder)

Vous devez (au minimum) suivre les étapes suivantes pour activer l'inscription à la base de données externe - une seule table est requise dans la base de données. Celle-ci contient un enregistrement pour chaque combinaison utilisateur / cours. Si la table est volumineuse, il est conseillé de s’assurer que les index appropriés ont été créés :

  • Utilisez une base de données existante ou créez-en une nouvelle. Utilisez une table existante ou créez-en une nouvelle avec les champs minimum suivants :
    1. Un identifiant de cours unique correspondant à l'un des champs suivants :
      • le champ "idnumber" dans la table des cours de Moodle (varchar 100), qui est spécifié manuellement comme N° d'identification du cours lors de l'édition des paramètres du cours
      • le champ "shortname" dans la table des cours de Moodle (varchar 255), qui est spécifié manuellement comme Nom abrégé du cours lors de l'édition des paramètres du cours
      • le champ "id" dans la table des cours de Moodle (int 10), qui est créé automatiquement par Moodle en fonction de l'ordre de création des cours
    2. Un identifiant utilisateur unique correspondant à l'un des champs suivants :
      • le champ "idnumber" dans la table des utilisateurs de Moodle (varchar 255), qui est spécifié manuellement comme Numéro d'identification lors de l'édition du profil de l'utilisateur
      • le champ "username" dans la table des utilisateurs de Moodle (varchar 100), qui est spécifié manuellement comme Nom d'utilisateur lors de l'édition du profil de l'utilisateur
      • le champ "email" dans la table des utilisateurs de Moodle (varchar 100), qui est spécifié manuellement comme Adresse du courriel lors de l'édition du profil de l'utilisateur
      • le champ "id" dans la table des utilisateurs de Moodle (int 10), qui est créé automatiquement par Moodle en fonction de l'ordre de création des utilisateur
    3. (optionnel) Un identifiant de rôle unique correspondant à l'un des champs suivants :
      • le champ "shortname" dans la table des rôles de Moodle (varchar 100), par exemple editingteacher, coursecreator, student, ...
      • le champ "name" dans la table des rôles de Moodle (varchar 255), par exemple Enseignant, Créateur de cours, Etudiant, ...
      • le champ "id" dans la table des rôles de Moodle (int 10), qui est basé selon l'installation initiale et l'ordre de création de nouveaux rôles
  • Remplissez la table de la base de données. Chaque combinaison utilisateur / cours doit avoir un enregistrement dans la table.
  • Dans Moodle, rendez-vous dans Administration du site > Plugins > Inscriptions > Gérer les plugins d'inscriptions, repérez Base de données externe dans la liste, activez-le (cliquez sur l'icône de l’œil fermé) et cliquez sur paramètres
  • Dans le panneau Connexion de la base de données externe, sélectionnez le pilote de base de données (assurez-vous que vous disposez de la configuration PHP requise pour ce pilote) et renseignez le paramètre afin de se connecter à la base de données.
  • Le panneau Correspondance des champs locaux crée le mappage entre Moodle et la base de données externe. Les trois premiers paramètres concernent les noms de champs locaux (Moodle) et les trois derniers, les paramètres distants (base de données externe). Ils sont dans le même ordre.
    • enrol_localcoursefield / enrol_remotecoursefield - dans Moodle, le nom du champ dans les paramètres du cours qui identifie de manière unique le cours (par exemple, idnumber). Dans la base de données externe, le nom du champ correspondant.
    • enrol_localuserfield / enrol_remoteuserfield - dans Moodle le nom du champ dans le profil utilisateur qui identifie l'utilisateur de manière unique (par exemple, idnumber). Dans la base de données externe, le nom du champ correspondant.
    • enrol_db_localrolefield / enrol_db_remoterolefield - (facultatif) dans Moodle le nom du champ dans la page d'édition du rôle qui identifie de manière unique le rôle (par exemple, le nom abrégé). Dans la base de données externe, le nom du champ correspondant.
  • L'option Rôle par défaut spécifie le rôle que l'utilisateur obtiendra dans le cours si son rôle n'est pas spécifié dans la base de données externe.
  • Un nouveau champ optionnel Champ distant Autre utilisateur (enrol_database | remoteotheruserfield) permet aux utilisateurs ayant le rôle "Autres utilisateurs" d'être ajoutés mais non inclus en tant que participants au cours.
  • Le dernier panneau permet d'activer la création automatique de nouveaux cours.
  • Enregistrez les modifications. N'hésitez pas à tester vos paramètres de connexion en cliquant sur Réglages de test dans la page de configuration des plugins d'inscription de Moodle.

Exemple de correspondance de champs

Choisissez vos champs dans la base de données Moodle :

  • enrol_localcoursefield: un identifiant de cours de la table mdl_course, par exemple "idnumber"
  • enrol_localuserfield: un identifiant d'utilisateur de la table mdl_user, par exemple "idnumber"
  • enrol_localrolefield: (optionnel) un identifiant de rôle de la table mdl_role, par exemple "shortname"

Créez une vue dans votre base de données externe qui correspond aux valeurs de champ choisies dans Moodle :

  • enrol_remotecoursefield: un identifiant de cours correspondant à votre table de base de données externe, par exemple. "course_number"
  • enrol_remoteuserfield: un identifiant d'utilisateur correspondant à votre table de base de données externe, par exemple. "userid"
  • enrol_remoterolefield: (optionnel) un identifiant de rôle correspondant à votre table de base de données externe, par exemple. "rolename"

Risques potentiels

  • Il va de soi que l'intégrité des données de votre base de données est importante. Si des données sont manquantes dans la base de données, il est possible que des utilisateurs ne soient pas inscrits à certains ou à tous leurs cours. Le processus de désinscription les supprime de toute affectation de groupe et interroge chaque type de module pour permettre au module de supprimer les données de cet utilisateur, le cas échéant (par exemple, les publications de forum ne sont jamais supprimées). Il est donc prudent de veiller à ce que les données de la base de données externe soient constamment valides.
  • Problème de sécurité mineur Considérez que si le champ du numéro d'identification que vous utilisez pour identifier vos étudiants est modifiable par les étudiants (dans leur profil), il est possible qu'ils remplacent ce numéro par l'identifiant d'un autre étudiant valide et obtiennent ainsi un accès à des ressources dont ils ne devraient pas. (Cependant, Ils apparaîtront toujours comme "eux-mêmes", ils ne pourront pas usurper l'identité de l'autre utilisateur ou accéder à ses ressources.) Pour éviter ce problème et des problèmes similaires, vous pouvez verrouiller le champ "Numéro d'identification" ou tout autre champs choisis afin que l'utilisateur ne puisse pas les modifier. Rendez-vous dans les paramètres de la méthode d'authentification utilisée pour verrouiller les champs nécessaires.

Erreurs et diagnostics

Le plugin génère un certain nombre de messages de diagnostic et / ou d’erreurs qui sont enregistrés dans le journal des erreurs PHP (comme défini dans le fichier php.ini). De plus, les messages sur les cours qui sont dans la base de données pour l'utilisateur mais qui n'existent pas sur le site Moodle ne seront générés que si le débogage est défini sur ALL ou DEVELOPER.

Vous pouvez obtenir des informations de progression détaillées en exécutant le script de synchronisation (sync.php) avec le paramètre -v :

php /path/to/moodle/enrol/database/cli/sync.php -v

Voir aussi