Einschreibung über externe Datenbank
Diese Seite muss überarbeitet werden, weil sie neue Funktionalitäten enthält. Greif zu!
Wenn du dich um diesen Artikel kümmern willst, dann kennzeichne das, indem du die Vorlage {{ÜberarbeitenNeu}} durch die Vorlage {{ÜberarbeitenVergeben}} ersetzt.
Wenn du mit deiner Arbeit fertig bist, dann entferne die Vorlage aus dem Artikel.
Danke für deine Mitarbeit!
Eine externe Datenbank nutzen, um Kurseinschreibungen zu steuern
Sie können eine (nahezu beliebige) externe Datenbank verwenden, um zu steuern, welche Nutzer/innen in welche Kurse eingeschrieben werden. Voraussetzung dafür ist, dass die externe Datenbank Felder hat, die die Kurs-ID, die Nutzer-ID und optional für die Nutzer-Rolle enthalten. Diese Felder werden mit den entsprechenden Feldern der Tabellen mdl_course, mdl_user
und mdl_role
der Moodle-Datenbank abgeglichen.
Moodle unterstützt folgende externe Datenbanken, beachten Sie jedoch, dass Sie PHP mit den entsprechenden Optionen kompilieren oder ODBC verwenden müssen:
- access
- ado
- mssql
- borland_ibase
- csv
- db2
- fbsql
- firebird
- ibase
- informix72
- informix
- mysql (veraltet, bitte nutzen Sie stattdessen mysqli)
- mysqli
- mysqlt
- oci805
- oci8
- oci8po
- odbc
- odbc_mssql
- odbc_oracle
- oracle
- postgres64
- postgres7
- postgres
- proxy
- sqlanywhere
- sybase
- vfp
Einschreibung in einen und Abmeldung aus einem Kurs
Die Einschreibung bzw. Abmeldung über eine externe Datenbank erfolgt in dem Moment, wo sich eine Person in Moodle anmeldet. Das Plugin sorgt dafür, dass die Person automatisch in allen Kursen eingeschrieben wird - entsprechend der Daten in der externen Datenbank. Optional legt Moodle neue (leere) Kurse an, wenn eine Kurs-ID in der externen Datenbank vorkommt, die es in Moodle noch nicht gibt. Um zu testen, ob das funktioniert, melden Sie sich mit einem Test-Nutzerkonto an und prüfen, ob dieser Test-Nutzer in die richtigen Kurse eingeschrieben wurde.
Ebenso wird die Person aus Moodle-Kursen abgemeldet, wenn die Daten in der externen Datenbank entsprechend sind. Die Abmeldung über die externe Datenbank erfolgt jedoch nur, wenn die Person zuvor über die externe Datenbank eingeschrieben wurde.
Verborgene Kurse
Kurse, die für Teilnehmer/innen nicht verfügbar sind (siehe Kurseinstellungen), werden ignoriert, wenn die Checkbox Verborgene Kurse ignorieren markiert ist (auf der Seite Website-Administration (oder im Block Einstellungen) > Website-Administration) > Plugins > Einschreibung > Externe Datenbank).
Einschreibung und Rollen
Auf der Seite Website-Administration (oder im Block Einstellungen) > Website-Administration) > Plugins > Einschreibung > Externe Datenbank können Sie mit der Einstellung Standardrolle festlegen, welche Rolle eine Person bei der Einschreibung in einem Moodle-Kurs erhält. Standardmäßig ist das die Standard-Kursrolle Teilnehmer/in. Sie können jedoch auch in der externen Datenbank ein Feld anlegen (das in der Einstellung Rollenfeld (Remote) festgelegt ist), das den Rollennamen oder die Rollen-ID der Nutzer-Rolle enthält. Das kann z.B. verwendet werden, um sowohl Trainer/innen als auch Teilnehmer/innen einzuschreiben, in dem man geeignete Daten in der externen Datenbank verwendet.
Abmeldung
Die Einstellung Externer Abmeldevorgang auf der Einstellungen-Seite des Einschreibung-Plugins Externe Datenbank legt fest, welche Aktion ausgeführt werden soll, wenn eine Einschreibung in der externen Quelle gelöscht wird. Die jeweiligen Optionen sind: The External unenrol action ("enrol_database | unenrolaction") setting in the plugin settings page defines what action should be taken when a user enrolment disappears from external enrolment source. Each setting does the following:
- Nutzer/in aus dem Kurs abmelden: Wenn eine Einschreibung in der externen Quelle gelöscht wird, wird die Einschreibung und alle damit verbundenen Rollenzuweisungen in Moodle gelöscht. Das bedeutet, dass bei dieser Abmeldung aus dem Kurs einige Nutzerdaten und -einstellungen gelöscht werden (z.B. Bewertungen, Abgaben für Aufgaben, etc.)
- Nutzer/in eingeschrieben lassen: Wenn eine Einschreibung in der externen Quelle gelöscht wird, bleibt die Einschreibung in Moodle erhalten und die Person kann weiter auf den Kurs und die darin enthaltenen Materialien zugreifen, an Aktivitäten teilnehmen, usw. Das ist die "Nichts tun-Option.
- Kurseinschreibung deaktivieren: Wenn eine Einschreibung in der externen Quelle gelöscht wird, wird die Kurseinschreibung der Person in Moodle deaktiviert (die Person kann nicht mehr auf den Kurs zugreifen, aber die Nutzerdaten und -einstellungen bleiben erhalten), doch ihre Rollenzuweisungen bleiben erhalten. Diese Option können Sie verwenden, wenn eine Person eine Rolle mit bestimmten Rechten benötigt, um in der grafischen Benutzeroberfläche sichtbar zu bleiben - z.B. in der Bewertungsübersicht des Kurses, in Aufgabenaktivitäten usw.
- Kurseinschreibung deaktivieren und Rollen entfernen: Wenn eine Einschreibung in der externen Quelle gelöscht wird, wird die Kurseinschreibung der Person in Moodle deaktiviert und ihre Rollenzuweisungen werden gelöscht. Beachten Sie, dass die Person aus der Bewertungsübersicht des Kurses und anderen Ansichten verschwindet.
Kurse anlegen - ÜBERSETZEN!!!
Moodle kann einen Kurs neu anlegen, wenn seine ID in der externen Datenbank vorkommt, er aber noch nicht in Moodle existiert.
Zusätzlich können Sie in der Einstellung Kursbereich des neuen Kurses angeben, in welchem Kursbereich ein solcher Kurs angelegt wird. Hier muss die ID eines vorhandenen Kursbereichs eingetragen werden; es wird kein neuer Kursbereich angelegt. Die Kursbereich-ID wird beim Anlegen eines Kursbereichs von Moodle vergeben, sie steht in der Tabelle mdl_course_categories
in der Spalte id
.
- Verwechseln Sie diese Kursbereich-ID nicht mit dem benutzerdefinierten Feld Kursbereich-ID-Nummer, die Sie für einen Kursbereich manuell festlegen können. (Siehe MDL-28518 und MDL-31845.)
- Leaving the category id data empty means that a course will be assigned to the default category.
- If you assign data to categories that do not exist already in Moodle, the courses will not be created.
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."
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.
Synchronising external database enrolments (scheduled task and deprecated script) - ÜBERSETZEN!!!
Neue Funktionalität
in Moodle 3.7!
Ab Moodle 3.7 a scheduled task called "Synchronise external database enrolments task" synchronises all user enrolments at once - both adding and removing user enrolments (and creating courses if specified) (MDL-59986).
Note that you need to make sure all the users present in the external enrolments are already created in Moodle, because users not existing in Moodle can't be enrolled in a course. If you are using external authentication plugins (db, ldap, etc.) you can use the scripts provided by those plugins to synchronise your users before running this script.
A deprecated script is also provided that can do this task if the scheduled task is disabled (if the scheduled task is enabled the script won't do anything). The script is called sync.php and is found in the enrol/database/cli folder.
This script is meant to be called from a system cronjob to sync moodle enrolments with enrolments in the external database.
Synchronisation Moodle stellt ein Skript enrol/database/enrol_database_sync.php zur Verfügung, dass alle Einschreibungen "mit einem Klick" synchronisiert (sowohl Einschreiben als auch Abmelden von Nutzer/innen).
Das Skript kann von einem Cron-Job aufgerufen werden. Sie müssen sicherstellen, dass alle von Moodle benötigten Nutzerinformationen in der externen Datenbank hinterlegt sind. Wenn Sie für die Authentifizierung ebenfalls externe Datenbanken verwenden (LDAP-Server, Externe Datenbank, usw.), dann verwenden Sie zuerst die Skripte, die diese Authentifizierungs-Plugins bereitstellen, um Ihre Nutzer/innen zu synchronisieren, bevor Sie das Skript für die Einschreibungssynchronisation laufen lassen.
Beispiel für einen Eintrag in der Crontab:
# 5 minutes past 4am 5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php
Hinweise:
- Wenn Sie eine große Zahl von Einschreibungen haben, dann erhöhen Sie das Memory-Limit mittels der Option
-d memory_limit=256M
- Für das Debugging und Logging verwenden Sie folgende Optionen:
-d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
. - Die Einschreibung funktioniert nur für Nutzer/innen, die bereits ein Nutzerkonto in Ihrem Moodle haben.
Setting up enrolment sync (How to) - ÜBERSETZEN!!!
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:
- Use an existing database or create a new one. Use an existing table or create a new one with the following minimum fields.
- A unique course identifier to match one of the following fields.
- 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
- 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
- the "id" field in Moodle's course table (int 10), which is based on course creation order
- A unique user identifier to match one of the following fields.
- the "idnumber" field in Moodle's user table (varchar 255), which is manually specified as the "ID number" when editing a user's profile
- the "username" field in Moodle's user table (varchar 100), which is manually specified as the "Username" when editing a user's profile
- the "email" field in Moodle's user table (varchar 100), which is manually specified as the "Email address" when editing a user's profile
- the "id" field in Moodle's user table (int 10), which is based on user creation order
- (optional) A unique role identifier to match one of the following fields.
- the "shortname" field in Moodle's role table (varchar 100), for example editingteacher, coursecreator, student, ...
- the "name" field in Moodle's role table (varchar 255), for example Teacher, Course creator, Student, ...
- the "id" field in Moodle's role table (int 10), which is based on initial installation and new role creation order
- A unique course identifier to match one of the following fields.
- Populate the database table. Each user/course combination to have a record in the 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.
- 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.
- 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.
- 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_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_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.
- The Roles panel specifies the role that the user will get in the course if their role is not specified in the external database.
- 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.
- The final panel enables auto creation of courses.
- Save changes, and then tick the box to enable external database enrolment.
Systemweite Einstellungen In der externen Datenbank muss eine Tabelle mit den Nutzer-Kurs-Datensätzen vorhanden sein. Wenn die Tabelle groß ist, empfiehlt es sich, geeignete Indizes zu verwenden. Legen Sie in der externen Datenbank eine Tabelle mit mindestens folgenden Feldern an:
- Kurs-ID (die mit der Kurs-ID des Moodle-Kurses übereinstimmen muss)
- Nutzer-ID (die mit der Nutzer-ID des Moodle-Nutzers übereinstimmen muss)
- (optional) Rollen-ID (die mit der Rollen-ID der Moodle-Rolle übereinsteimmen muss)
Weitere Schritte:
- Füllen Sie diese Tabelle mit geeigneten Datensätzen - pro Nutzer-Kurs-Einschreibung ein Datensatz.
- In Moodle gehen Sie als Administrator/in auf die Seite Website-Administration (oder im Block Einstellungen) > Website-Administration) > Plugins > Einschreibung > Übersicht und klicken Sie auf das Auge-Symbol bei Externe Datenbank.
- Gehen Sie dann auf die Seite Website-Administration (oder im Block Einstellungen) > Website-Administration) > Plugins > Einschreibung > Externe Datenbank und nehmen Sie die nötigen Einstellungen vor:
Externe Datenbankverbindung In diesem Bereich wählen Sie den Datenbanktyp und tragen die Daten für die Verbindung zur externen Datenbank ein.
Lokale Feldzuordnung In diesem Bereich tragen Sie ein, welche Felder der lokalen Moodle-Datenbank in der externen Datenbank verwendet werden, um die Datensätze eindeutig zu identifizieren:
- Lokaler Kurs: Der Kurs kann in der externen Datenbank über die lokalen Felder id (ID des Moodle-Kurses), idnumber (Kurs-ID des Moodle-Kurses) oder shortname (Kurzbezeichnung des Moodle-Kurses) referenziert werden.
- Lokaler Nutzer: Der Nutzer kann in der externen Datenbank über die lokalen Felder id (ID des Moodle-Nutzers), idnumber (ID-Nummer des Moodle-Nutzers), email (E-Mail des Moodle-Nutzers) oder username (Anmeldename des Moodle-Nutzers) referenziert werden.
- Lokale Rolle: Die Rolle kann in der externen Datenbank über die lokalen Felder id (ID der Moodle-Rolle), shortname (Kurzbezeichnung der Moodle-Rolle) oder fullname (Name der Moodle-Rolle) referenziert werden.
Einschreibesynchronisation (Remote) In diesem Bereich tragen Sie die entsprechenden Daten der externen Datenbank ein:
- Externe Nutzertabelle - tragen Sie hier den Namen der Tabelle in der externen Datenbank ein.
- Kursfeld (Remote) - tragen Sie hier den Namen des Datenfeldes ein, das in der externen Tabelle den Kurs referenziert.
- Nutzerfeld (Remote) - tragen Sie hier den Namen des Datenfeldes ein, das in der externen Tabelle den Nutzer referenziert.
- Rollenfeld (Remote) - tragen Sie hier den Namen des Datenfeldes ein, das in der externen Tabelle die Rolle *Standardrolle - wählen Sie hier die Rolle, die nutzer/innen bei der Einschreibung in den lokalen Moodle-Kurs erhalten sollen.
- Verborgene Kurse ignorieren - wenn Sie diese Checkbox markieren, dann werden Nutzer/innen nur in Kurs eingeschreiben bzw. aus Kursen abgemeldet, die in Moodle für Teilnehmer/innen verfügbar sind.
- Externer Abmeldevorgang - wählen Sie hier, was mit einer Einschreibung in Moodle passieren soll, wenn der zugehörige Datensatz in der externen datenbank gelöscht wird.
Erstellen eines neuen Kurses
- Externe neue Kurstabelle - tragen Sie hier den Namen der Tabelle in der externen Datenbank ein, die die neu anzulegenden Kurse enthält.
- Vollständiger Name des neuen Kurses - tragen Sie hier ein, wie das Datenfeld in der externen Tabelle für neue Kurse heißt, das die Information über den vollständigen Kursnamen enthält.
- Kurzname des neuen Kurses - tragen Sie hier ein, wie das Datenfeld in der externen Tabelle für neue Kurse heißt, das die Information über den Kurznamen des Kurses enthält.
- ID-Nummer des neuen Kurses - tragen Sie hier ein, wie das Datenfeld in der externen Tabelle für neue Kurse heißt, das die Information über ID-Nummer des neuen Kurses enthält.
- Kursbereichs-ID des neuen Kurses - tragen Sie hier ein, wie das Datenfeld in der externen Tabelle für neue Kurse heißt, das die Information über die Kursbereichs-ID des neuen Kurses enthält.
- Standardmäßiger Kursbereich - alternativ können Sie hier einen Kursbereich wählen, in dem alle Kurse neu angelegt werden.
Wenn Sie alle Einstellungen getroffen haben, klicken Sie abschließend auf den Button Änderungen speichern.
Field Mapping Example: ÜBERSETZEN!!!
Choose your fields from the Moodle database:
- enrol_localcoursefield: A course identifier from mdl_course, e.g. "idnumber"
- enrol_localuserfield: A user identifier from mdl_user, e.g. "idnumber"
- enrol_localrolefield: (optional) A role identifier from mdl_role, e.g. "shortname"
Create a view in your external database which matches the chosen field values from Moodle:
- enrol_remotecoursefield: A matching course identifier from your external database table, e.g. "course_number"
- enrol_remoteuserfield: A matching user identifier from your external database table, e.g. "userid"
- enrol_remoterolefield: (optional) A matching role identifier from your external database table, e.g. "role_name"
Die Einschreibung über externe Datenbank erscheint nicht in der Liste der Einschreibemethoden im Kurs - warum?
Im Kurs finden Sie über das Zahnrad-Symbol rechts oben > Mehr … (oder im Block Einstellungen > Kurs-Administration) > Nutzer/innen > Einschreibemethoden alle interaktiven Einschreibemethoden aufgelistet. Die Einschreibung über externe Datenbank gehört nicht dazu, diese Einschreibung erfolgt "automatisch".
Mögliche Probleme - ÜBERSETZEN!!!
- Es ist klar, dass die Integrität der externen Datenbank von größter Wichtigkeit ist. Wenn in der externen Datenbank Fehler in den Datensätzen auftreten, hat das unmittelbare (negative) Auswirkungen auf die Einschreibungen in Moodle.
- Sicherheitsrisiko: Wenn das ID-Nummer-Feld im Moodle-Nutzerprofil bearbeitbar ist und Nutzer/innen ändern dieses Feld tatsächlich, dann kann es ebenfalls zu Problemen kommen, wenn in der externen Datenbank Nutzer/innen gerade über dieses Datenfeld referenziert werden.
- 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.
- 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.
Errors and diagnostics - ÜBERSETZEN!!!
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.
You can get detailed progress information by executing the sync script with -v parameter:
php /path/to/moodle/enrol/database/cli/sync.php -v
Siehe auch
- Someone explain external database enrolment, please??
- [1] Beispielkonfiguration
- Externe Datenbank