External database enrolment

Da MoodleDocs.

Posizione: Iscrizioni su databse esterno, pulsante Modifica nella colonna Impostazioni di Amministrazione> Corsi > Gestione iscrizione


E' possibile utilizzare un database esterno (praticamente di ogni tipo) per gestire le iscrizioni. Il database esterno deve contenere un campo contente l'ID del corso, un campo per la user ID, e campo per il ruolo utente (opzionale). Questi campi vengono confrontati con quelli scelti nel corso locale, le tabelle utente e le tabelle dei ruoli.

La lista che segue elenca i database supportati. Tenere presente che è necessario scrivere il codice PHP con le funzioni di connessione appropriate per ognuno di essi oppure utilizzando ODBC

  • 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

Iscrizione e rimozione

Le iscrizioni basate su database esterno si attivano al momento del login di un utete su Moodle. Il plugin tenterà di iscrivere automaticamente lo studente in tutti i corsi secondo quanto indicato dai dati nel database esterno e, se necessario, creerà i relativi corsi vuoti se non già esistenti.

Per verificare il buon esito, provare ad auteticarsi come sutende e controllare che appaia la lista dei corsi esatta.

Questo processo serve anche per rimuovere gli utenti da uno o più corsi se non appaiono più nel database. I record degli utenti sono segnati secondo il metodo di iscrizione originario.

Quindi il plugin del database esterno è in grado di rimuovere solo gli utenti che sono stati inizialmente iscritti col plugin.

Corsi nascosti

I corsi configurati come "Corso non disponibile per gli studenti" possono essere ignorati per le attività di iscrizioni impostando l'opzione "enrol_db_ignorehiddencourse" con valore si.

Iscrizioni e ruoli

L'impostazione "enrol_db_defaultcourseroleid" nella pagina di configurazione dei plugin, indica il ruolo attribuito all'utente una volta aggiunti al corso. L'impostazione predefinita attribuirà a ogni utente la stessa di default indicata per il corso (inizialmente "studente"). Comunque è possibile indicare un campo di una tabella del database esterno (indicata nell'opzione "enrol_db_remoterolefield") che contiene il nome breve del ruolo dell'utente. Questo, per esempio, potrebbe esere utile per iscrivere a un corso sia gli studenti che i docenti, utilizzando un database configurato allo scopo.

Creazione dei corsi

I corsi che non esistono nel sito Moodle, possono essere creati. Impostare "enrol_db_autocreate" a yes nella configurazione del plugin. Si può indicare, inoltre, la Categoria a cui far appartenere il nuovo corso e un "modello" di corso dal quale copiare.


Script di sincronizzazione

E' disponibile uno script in grado di sincronizzare tutte le iscrizioni in una unica operazione - sia aggiungendo, sia rimuovendo gli utenti (e creando i corsi se specificato). Lo script è chiamato enrol_database_sync.php e si trova nella cartella enrol/database.

Questo script va eseguto dal cronjob di sistema e sincronizza le iscrizioni di Moodle con quelle del database esterno. E' necessario assicurarsi che tutti gli utenti presenti nel database esterno siano gia stati creati in Moodle. Se si utilizzano plugin di autenticazione esterni (db, ldap, ecc.) si possono utilizzare gli script forniti da tali plugin per sincronizzare gli utenti prima di eseguire lo script.

Esempio di comando cron:

   # 5 minutes past 4am
   5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/enrol_database_sync.php

Note:

  • Se si ha un numero elevato di iscritti, potrebbe essere necessario elevare il limite di memoria pasasndo il parametro -d memory_limit=256M
  • Per scopi di debug e una migliore prestazione, si consiglia di utilizzare: -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
  • Funziona solo con utenti già esistenti nel sito Moodle (come su sopra).

Impostazione (Come fare)

E' necessario eseguire (come minimo) i seguenti passi per abilitare le iscrizioni su database esterno - è richiesta una sola tabella, nel database, che contenga un record per ogni combinazione utente/corso. Se la tabella è di grandi dimensioni, è una buona idea creare degli indici:

  • Utilizzare un database esistente o crearne uno. Utilizzare una tabella esistente o crearne una nuova con almeno i seguenti campi:
    • id del corso (che corrisponda all'id univoco di Moodle)
    • id utente (che corrisponda all'id univoco di Moodle)
    • (opzionale) id ruolo (che corrisponda all'id univoco di Moodle)
  • Popolare la tabella del database. Un record deve esistere per ogni combinazione utente/corso
  • In Moodle, recarsi su Amministrazione Sito => Corsi => Iscrizioni, cercare Database Esterno e cliccare su Impostazioni
  • Nel pannello superiore, selezionare il tipo di database (asssicurarsi di avere la configurazione PHP corretta) e inserire le informazioni di connessione ad esso.
  • Il pannello centrale crea la mappatura tra Moodle ed il database esterno. Le prime tre voci riguardano i nomi dei campi locali (cioè di Moodle) mentre le ultime tre sono quelle remote (database esterno). Sono tutte nello stesso ordine.
    • enrol_localcoursefield / enrol_remotecoursefield - in Moodle è il nome del campo nelle impostazioni del corso che identifica in maniera univoca il corso (ad es. idnumber). Nel database esterno è il nome del campo che ad esso corrisponde.
    • enrol_localuserfield / enrol_remoteuserfield - in Moodle è il nome del campo nel profilo utente che identifica in maniera univoca l'utente (ad es. iduser). Nel database esterno è il nome del campo che ad esso corrisponde.
    • enrol_db_localrolefield / enrol_db_remoterolefield - (opzionale) in Moodle è il nome del campo del ruolo nella pagina di modifica che identifica in maniera univoca il ruolo (ad es. shortname). Nel database esterno è il nome del campo che ad esso corrisponde.
  • Il pannello Ruolo indica il ruolo che verrà attribuito a un utente del corso se nel database esterno un ruolo non è specificato.
  • L'ultimo pannello abilita la creazione automatica dei corsi.
  • Salvare le impostazioni e quindi spuntare la checkbox per abilitare le iscrizioni con database esterno.

Le iscrizioni da Database non appaiono nel menu a discesa delle iscrizioni corsi. Perchè ?

Il menu a discesa delle iscrizioni corsi elenca solo interactive enrolment plugins. Le iscrizioni su database esterno non fanno parte di questo plugin, quindi non appaiono elencate. Allo stesso modo per l'impostazione "Course Enrollable" nelle impostazioni di un corso, non si applicano alle iscrizioni su db estrerno.

I soli plugins di iscrizione interattivi sono manual (detti anche interni), paypal e authorize.net.

Esempio di mappatura dei campi:

Scegli i tuoi campi dal database di Moodle:

  • enrol_localcoursefield: identificativo di un corso da mdl_course, es. "idnumber"
  • enrol_localuserfield: identificativo di un utente da mdl_user, es. "idnumber"
  • enrol_localrolefield: (opzionale) identificativo di un ruolo da mdl_role, es. "shortname"

Crea una vista, sul tuo db esterno, che corrisponda ai campi scelti su Moodle:

  • enrol_remotecoursefield: identificativo corso di destinazione, sul db esterno es. "course_number"
  • enrol_remoteuserfield: identificativo utente di destinazione, sul db esterno es. "userid"
  • enrol_remoterolefield: (opzionale) identificativo ruolo di destinazione, sul db esterno es. "role_name"

Possibili problemi

  • Superfluo dire che l'integrità del db esterno è fondamentale. Se i dati mancano dal database potrebbero verificarsi omissioni di iscrizioni ad uno o più corsi. Allo stesso modo per la rimozione di utenti da uno o più corsi. Quindi è necessario essere prudenti e adottare ogni precauzione per che i dati esterni siano sempre accurati.
  • Problema di sicurezza secondario- considerare che se il campo ID utilizzato per identificare uno studente è modificabile dagli utenti con ruolo "studente" (nel loro profilo), potrebbe verificarsi il richio potenziale che essi modifichino il loro id con quello di un altro studente, ottenendo l'accesso a contenuti che non dovrebbero vedere. In ogni caso il loro profilo rimarrà invariato, non sarà possibile per essi apparire come un'identità diversa o utilizzare le risorse del profilo abusato.

Errori e Diagnosi

Il plugin visualizza una serie di messaggi di errore o di avvertimenti. Prima di Moodle 1.8.3 erano mostrati direttamente a monitor. Dalla versione 1.8.3 in poi, sono memorizzati nel log errori di PHP (secondo quanto definito nel file php.ini). Inoltre, i messaggi riguardo ai corsi che sono sul database per l'utente ma che non esistono sul sito Moodle, saranno prodotti solo se il debug è impsotato a ALL o developer.

Approfondimenti

it:Iscrizioni su databse esterno