外部データベース登録

登録を制御するための外部データベースの使用

あなたはあなたの登録を管理するために(ほとんどどんな種類の)外部データベースを使うことができます。外部データベースにコースIDを含むフィールド、ユーザーIDを含むフィールド、およびオプションでロールを含むフィールドが含まれていると想定されます。これらは、ローカルコース、ユーザーテーブル、およびロールテーブルで選択したフィールドと比較されます。

以下はサポートされているデータソースですが、PHPを適切なオプションまたはODBCを介してコンパイルする必要があることに注意してください。

  • アクセス
  • あどい
  • mssql
  • borland_ibase
  • csv
  • db2
  • fbsql
  • 火の鳥
  • イバセ
  • informix72
  • informix
  • mysql(廃止予定、代わりにmysqliを使用してください)
  • mysqli
  • mysqlt
  • oci805
  • oci8
  • oci8po
  • odbc
  • odbc_mssql
  • odbc_oracle
  • オラクル
  • postgres64
  • postgres7
  • postgres
  • 代理人
  • sqlanywhere
  • sybase
  • vfp

登録と登録解除

ユーザがMoodleにログインした瞬間に、外部データベース登録が発生します。プラグインは、外部データベースのデータに従って、すべてのコースに自動的に学生を登録しようとし、必要に応じて、まだ存在しない空のコースを作成します。それが機能しているかどうかを確認するには、学生としてログインしてから、コースのリストが予想どおりであることを確認します。

データベースに存在しなくなったユーザーも、コースから登録解除されます。ユーザーレコードは、元の登録方法に従ってマークされています。したがって、外部データベースプラグインは、そもそもプラグインに登録されたユーザーのみを登録解除できます。

隠しコース

「enrol_db_ignorehiddencourse」をyesに設定すると、「コースは学生には利用できません」に設定されているコースは、登録目的で無視できます

登録とロール

プラグイン設定ページの "enrol_database | defaultrole"設定は、ユーザーがコースに追加されたときに取るロールを指定します。既定の設定では、コースの既定の設定(最初は "student")に設定されます。ただし、ユーザーのロールの短縮名またはIDを含む外部テーブル内のフィールド( "enrol_database | remoterolefield"設定で指定)を指定できます。これは、たとえば、適切に設定されたデータベースを使用して、学生と教師の両方をコースに参加させるために使用できます。

登録解除

プラグイン設定ページの外部登録解除アクション( "enrol_database | unenrolaction")設定は、ユーザー登録が外部登録ソースから消えたときに実行するアクションを定義します。各設定は以下を行います。

  1. 「コースからのユーザー登録解除」ユーザーが外部ソースから消えると、登録は完全に削除され、すべてのロールが削除されます。これは、一部のユーザーデータおよび設定がコースの登録解除中にコースから削除されることを意味します(通常、評定、活動の試行などが含まれます)。
  2. 「ユーザー登録を維持する」ユーザーが外部の情報源から消えても、登録はそのまま維持され、ユーザーはコースに入って活動を実行したり、リソースにアクセスしたりすることができます。これは「何もしない」オプションです。
  3. 「コース登録を無効にする」ユーザーが外部ソースから消えた場合、ユーザー登録は一時停止され(ユーザーはコースにアクセスできませんが、ユーザーデータと設定は保持されます)、ロールはそのまま保持されます。これは、評定ブックや課題などでユーザーがUIに表示するための機能を持つロールを必要とする場合があるためです。
  4. 「コース登録を無効にしてロールを削除する」ユーザーが外部ソースから消えた場合、登録は中断され、登録インスタンスによって割り当てられたロールは削除されます。ユーザーは評定表やその他の領域から「消える」ことがあります。

コースを作成する

Moodleサイトに存在しないコースをオプションで作成することができます。

[ 新しいコースカテゴリID]フィールドに 、新しいコースを配置するカテゴリを追加で指定できます。このフィールドのデータは現在存在するカテゴリのIDでなければなりません。新しいカテゴリは作成されません。 id番号は、カテゴリが作成されたときにMoodleによってデータベースに割り当てられた番号です(例:mdl_course_categories.id)。

  • このカテゴリIDを、手動でカテゴリに割り当てることができる新しいカスタムカテゴリID番号フィールドと混同しないでください。 (Tracker https://tracker.moodle.org/browse/MDL-28518およびhttps://tracker.moodle.org/browse/MDL-31845を参照してください)。
  • カテゴリーIDデータを空のままにしておくと、コースがデフォルトのカテゴリーに割り当てられます。
  • Moodleにまだ存在しないカテゴリにデータを課題た場合、コースは作成されません。

デフォルトの新規コースカテゴリは、「新規コースカテゴリID」フィールドのデータフィールドに設定して指定していない限り、コースを課題て作成するカテゴリです。

新しいコーステンプレート 、つまり新しいコースのコピー元となる「テンプレート」コースを指定することもできます。このフィールドのデータはテンプレートコースのショートネームであるべきです。

同期スクリプト

一度にすべてのユーザー登録を同期できるスクリプトが提供されます - ユーザー登録の追加と削除(および指定されている場合はコースの作成)の両方。スクリプトはsync.phpと呼ばれ、enroll / database / cliフォルダーにあります。

このスクリプトは、システムのcronjobからmoodle登録を外部データベースの登録と同期するために呼び出されることを意図しています。外部登録に存在するすべてのユーザーがすでにmoodleで作成されていることを確認する必要があります。外部認証プラグイン(db、ldapなど)を使用している場合は、これらのプラグインによって提供されるスクリプトを使用して、このスクリプトを実行する前にユーザーを同期させることができます。

cronエントリの例

午前4時5分
   5 4 * * * / usr / bin / php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php

ノート:

  • 登録数が多い場合は、-d memory_limit = 256Mを渡してメモリ制限を引き上げることをお勧めします。
  • デバッグとより良いロギングのためには、コマンドラインで使うことをお勧めします。-d log_errors = 1 -d error_reporting = E_ALL -d display_errors = 0 -d html_errors = 0
  • これはあなたのMoodleサイトに既に存在するユーザに対してのみ有効です(上記のコメントを参照)。

登録同期の設定(方法)

外部データベース登録を有効にするには、(最低でも)次の手順を実行する必要があります。データベースには、すべてのユーザー/コースの組み合わせに対するレコードを含む単一のテーブルのみが必要です。テーブルが大きい場合は、適切なインデックスが作成されていることを確認することをお勧めします。

  • 既存のデータベースを使用するか、新しいデータベースを作成してください。既存のテーブルを使用するか、以下の最小フィールドを使用して新しいテーブルを作成します。
    1. 次のいずれかのフィールドに一致する一意のコースID。
      • Moodleのコーステーブル(varchar 100)の "idnumber"フィールド。コースの設定を編集する際に "コースID番号"として手動で指定されます。
      • Moodleのコーステーブル(varchar 255)の "ショートネーム"フィールド。コースの設定を編集するときに "コースショートネーム"として手動で指定されます。
      • コース作成順に基づいた、Moodleのコーステーブルの "id"フィールド(int 10)
    2. 以下のいずれかのフィールドに一致する固有のユーザーID。
      • Moodleのユーザテーブル内の "idnumber"フィールド(varchar 255)。ユーザのプロファイルを編集する際に "ID番号"として手動で指定されます。
      • Moodleのユーザテーブルの "username"フィールド(varchar 100)。ユーザのプロファイルを編集する際に "Username"として手動で指定されます。
      • Moodleのユーザテーブルの "email"フィールド(varchar 100)。ユーザのプロファイルを編集する際に "email address"として手動で指定されます。
      • Moodleのユーザテーブルの "id"フィールド(int 10)、これはユーザの作成順に基づいています
    3. (オプション)以下のいずれかのフィールドに一致する固有のロールID。
      • Moodleのロールテーブルの "shortname"フィールド(varchar 100)、例えばeditingteacher、coursecreator、student、...
      • Moodleのロールテーブル(varchar 255)の "名前"フィールド、例:教師、コース作成者、学生、...
      • Moodleのロールテーブルの "id"フィールド(int 10)。初期インストールと新しいロール作成順序に基づきます。
  • データベーステーブルを作成します。テーブルにレコードを持つ各ユーザー/コースの組み合わせ。
  • Moodleで[サイトの管理]> [プラグイン]> [登録]> [登録プラグインの管理 ]の順に選択し、リストから[外部データベース]を見つけて有効にし(目を閉じたアイコンをクリック)、[設定]をクリックします。
  • トップパネルで、データベースの種類を選択し(その種類に必要な設定がPHPであることを確認してください)、データベースに接続するための情報を指定します。
  • 真ん中のパネルはMoodleと外部データベース間のマッピングを作成します。最初の3つの設定はローカル(Moodle)のフィールド名、最後の3つはリモート(外部データベース)の設定です。それらは同じ順序です。
    • enrol_localcoursefield / enrol_remotecoursefield - Moodleではコース設定内のフィールドの名前(コースIDなど)がコースを一意に識別します。外部データベースでは、一致するフィールドの名前。
    • enrol_localuserfield / enrol_remoteuserfield - in Moodleで、ユーザを一意に識別するためのユーザプロファイル内のフィールドの名前(例:idnumber)。外部データベースでは、一致するフィールドの名前。
    • enrol_db_localrolefield / enrol_db_remoterolefield - (オプション)Moodleでロール編集ページのフィールド名を一意に識別するためのもの(ショートネームなど)。外部データベースでは、一致するフィールドの名前。
  • [ロール]パネルでは、外部データベースでロールが指定されていない場合に、ユーザーがコース内で取得するロールを指定します。
  • 新しいオプションのフィールドremoteotheruserfieldでは、「その他のユーザー」のロールを持つユーザーを追加できますが、コース参加者として含めることはできません。
  • 最後のパネルはコースの自動作成を可能にします。
  • 変更を保存し、ボックスをクリックして外部データベース登録を有効にします。

フィールドマッピングの例:

Moodleデータベースからあなたのフィールドを選択してください:

  • enrol_localcoursefield:mdl_courseからのコース識別子、例えば "idnumber"
  • enrol_localuserfield:mdl_userからのユーザーID、例えば "idnumber"
  • enrol_localrolefield:(オプション)mdl_roleからのロール識別子、例えば "shortname"

あなたの外部データベースにMoodleから選択したフィールド値と一致するビューを作成します。

  • enrol_remotecoursefield:外部データベーステーブルからの一致するコースID、例えば "course_number"
  • enrol_remoteuserfield:外部データベーステーブルからの一致するユーザー識別子、例えば "userid"
  • enrol_remoterolefield :(オプション)外部データベーステーブルからの一致するロール識別子、例えば "role_name"

潜在的なゴチャ

  • 言うまでもありませんが、外部データベースの整合性は重要です。データベースにデータがない場合は、一部のコースまたはすべてのコースからユーザーが登録解除される可能性があります。登録解除プロセスでは、グループの課題からそれらが削除され、必要に応じてそのモジュールにそのユーザーのデータを削除するオプションが与えられます(たとえば、フォーラムの投稿は削除されません)。したがって、外部データベースのデータが常に正しいことを確認するために最大限の注意を払うことが賢明です。
  • セキュリティ上の問題点学生の識別に使用するID番号フィールドが(自分のプロファイル内の)学生によって編集可能である場合、他の有効な学生のIDにこれを変更して自分が所有するリソースにアクセスできる可能性があります。いけない。この問題や同様の問題を回避するために、他のフィールドと同様にID番号をロックしてユーザーがそれらを変更できないようにすることができます。 。これは、 サイト管理>プラグイン>認証>外部データベースデータマッピングセクションで行います

エラーと診断

プラグインは、(php.iniファイルで定義されているように)PHPエラーログに記録される多数の診断メッセージやエラーを生成します。さらに、ユーザのデータベースにはあるがMoodleサイトには存在しないコースに関するメッセージは、デバッグがALLまたはDEVELOPERに設定されている場合にのみ作成されます。

-vパラメータを指定して同期スクリプトを実行すると、詳細な進捗情報を取得できます。

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

関連情報