Einschreibung über externe Datenbank: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
{{Einschreibung}} | {{Einschreibung}} | ||
Sie können eine externe Datenbank verwenden, um zu steuern, welche Nutzer/innen in welche Kurse eingeschrieben werden. Voraussetzung dafür ist, dass die externe Datenbank folgende Felder hat: | Sie können eine externe Datenbank verwenden, um zu steuern, welche Nutzer/innen in welche Kurse eingeschrieben werden. Voraussetzung dafür ist, dass die externe Datenbank folgende Felder hat: | ||
* ein Feld für die Kurs-ID | * ein Feld für die Kurs-ID | ||
Zeile 22: | Zeile 21: | ||
== Einschreibung und Rollen == | == Einschreibung und Rollen == | ||
Auf der Seite ''[[Einstellungen-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 ''Teilnehmer/in''. Sie können jedoch auch das Datenfeld aus der externen Datenbank eintragen, das den Rollennamen enthält. | |||
==Kurse anlegen== | ==Kurse anlegen== | ||
Moodle kann einen Kurs neu anlegen, wenn seine ID in der externen Datenbank vorkommt, er aber noch nicht in Moodle existiert. Sie können auch angeben, in welchem Kursbereich ein solcher Kurs angelegt wird. | |||
== 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 minutes past 4am | ||
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 | ||
Hinweise: | |||
* | *Wenn Sie eine große Zahl von Einschreibungen haben, dann erhöhen Sie das Memory-Limit mittels der Option <code>-d memory_limit=256M</code> | ||
* | * Für das Debugging und Logging verwenden Sie folgende Optionen: <code>-d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0</code>. | ||
*Die Einschreibung funktioniert nur für Nutzer/innen, die bereits ein Nutzerkonto in Ihrem Moodle haben. | |||
* | |||
==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 ''[[Einstellungen-Block|Einstellungen]] > Website-Administration > Plugins > Einschreibung > Übersicht'' und klicken Sie auf das Auge-Symbol [[Image:show.gif]] bei ''Externe Datenbank''. | |||
*Gehen Sie dann auf die Seite ''[[Einstellungen-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''. | |||
== | ==Die Einschreibung über externe Datenbank erscheint nicht in der Liste der Einschreibemethoden im Kurs - warum? == | ||
Im Kurs finden Sie auf der Seite ''[[Einstellungen-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== | |||
*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. | |||
==Siehe auch== | ==Siehe auch== |
Aktuelle Version vom 18. April 2012, 14:47 Uhr
Sie können eine externe Datenbank verwenden, um zu steuern, welche Nutzer/innen in welche Kurse eingeschrieben werden. Voraussetzung dafür ist, dass die externe Datenbank folgende Felder hat:
- ein Feld für die Kurs-ID
- ein Feld für die Nutzer-ID
- ein Feld für die Rolle
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: access, ado, mssql, borland_ibase, csv, db2, fbsql, firebird, ibase, informix72, informix, mysql, mysqlt, oci805, oci8, oci8po, odbc, odbc_mssql, odbc_oracle, oracle, postgres64, postgres7, postgres, proxy, sqlanywhere, sybase, vfp.
Beachten Sie jedoch, dass Sie PHP mit den entsprechenden Optionen kompilieren oder ODBC verwenden müssen.
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. Moodle sorgt dafür, dass die Person automatisch in allen Kursen eingeschrieben wird - entsprechend der Daten in der externen Datenbank. Darüber hinaus 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 Einstellungen > Website-Administration > Plugins > Einschreibung > Externe Datenbank).
Einschreibung und Rollen
Auf der Seite 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 Teilnehmer/in. Sie können jedoch auch das Datenfeld aus der externen Datenbank eintragen, das den Rollennamen enthält.
Kurse anlegen
Moodle kann einen Kurs neu anlegen, wenn seine ID in der externen Datenbank vorkommt, er aber noch nicht in Moodle existiert. Sie können auch angeben, in welchem Kursbereich ein solcher Kurs angelegt wird.
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.
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 Einstellungen > Website-Administration > Plugins > Einschreibung > Übersicht und klicken Sie auf das Auge-Symbol bei Externe Datenbank.
- Gehen Sie dann auf die Seite 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.
Die Einschreibung über externe Datenbank erscheint nicht in der Liste der Einschreibemethoden im Kurs - warum?
Im Kurs finden Sie auf der Seite 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
- 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.
Siehe auch
Diskussionsbeiträge im Kurs Using Moodle auf moodle.org: