「外部データベース登録」の版間の差分

提供:MoodleDocs
移動先:案内検索
 
(2人の利用者による、間の39版が非表示)
1行目: 1行目:
{{登録}}
{{登録}}  
==外部データベースを使用して登録を制御する==


作成中です - [[利用者:Mitsuhiro Yoshida|Mitsuhiro Yoshida]]
受講登録をコントロールするため、あなたは (ほとんどの種類の) 外部データベースを使用することができます。あなたの外部データベースのフィールドに、コースID、ユーザIDおよび任意のロールフィールドが含まれていると仮定します。これらのフィールドは、あなたが選択したローカルのコーステーブル、ユーザテーブルおよびロールテーブルを参照します。


ロケーション: 「設定 > サイト管理 > プラグイン > 受講登録 > 登録プラグイン管理」にて、外部データベース設定を編集することができます。
下記リストはMoodleでサポートされているデータソースです。あなたは適切なオプションを付けてPHPをコンパイルする、またはODBC経由にてデータベースにアクセスする必要があることに留意してください。
 
受講登録をコントロールするため、あなたは (ほとんどの種類の) 外部データベースを使用することができます。あなたの外部データベースのフィールドには、コースID、ユーザIDおよび任意のロールフィールドが含まれていると仮定します。これらのフィールドは、あなたが選択したローカルのコーステーブル、ユーザテーブルおよびロールテーブルと比較されます。
 
下記のリストは、Moodleでサポートされているデータソースです。あなたは適切なオプションを付けてPHPをコンパイルする、または[[ODBC]]経由にてデータベースにアクセスする必要があることに留意してください。


*access
*access
37行目: 34行目:
*vfp
*vfp


== 登録 & 登録解除 ==
==登録および登録解除==  
 
外部データベース登録はユーザがMoodleにログインした時点で動作します。このプラグインでは、外部データベースのデータにもとづき、すべての該当するコースに対して学生の自動登録を試みます。コースが存在しない場合、任意に空のコースを作成します。正常動作を確認するには、学生としてログインした後、コースリストがあなたの希望どおりになっているかどうか確認してください。
 
ユーザがデータベースに存在しない場合、この処理ではコースからユーザを登録解除します。ユーザレコードはオリジナルの登録方法に従って登録されます。そのため、最初に外部データプラグインによって登録されたユーザに限って、外部データプラグインはユーザを登録解除することができます。
 
==非表示のコース==
 
コース利用にて ''学生はこのコースを利用できない'' が設定されている場合、''非表示のコースを無視する (enrol_db | ignorehiddencourse)''を有効にすることで、コースを登録処理から除外することができます。


外部データベース登録はユーザがMoodleにログインした時点で動作します。このプラグインでは、外部データベースのデータにもとづき、すべての該当するコースに学生の自動登録を試みます。また、コースが存在しない場合、任意に空のコースを作成します。正常動作を確認するには、学生としてログインした後、コースリストがあなたの希望どおりになっているかどうか確認してください。
==登録とロール==


また、ユーザがデータベースに存在しない場合、この処理ではコースからユーザを登録解除します。ユーザレコードはオリジナルの登録方法に従って登録されます。そのため、最初に外部データプラグインによって登録されたユーザに限って、外部データプラグインはユーザを登録解除することができます。
プラグイン設定ページの ''デフォルトロール enrol_database | defaultrole'' では、コース追加時にユーザに割り当てられるロールを指定します。このデフォルトロール設定値はコースのデフォルト設定 (初期値は''学生'')として割り当てられます。しかし、''リモートロールフィールド enrol_database | remoterolefield'' にて、あなたはユーザロールの省略名を含む外部データベーステーブルのフィールドを指定することができます。例えば、この設定は適切に設定されたデータベースにより、学生および教師の両方をコースに登録するため使用できます。


== 非表示コース ==
==登録解除==  


コース利用にて「学生はこのコースを利用できない」が設定されているコースの場合、「非表示のコースを無視する (enrol_db | ignorehiddencourse)」を有効にすることで、登録処理から除外することができます。
プラグイン設定ページの外部登録解除アクション( "enrol_database | unenrolaction")設定は、ユーザ登録が外部登録ソースから消えたときに実行する必要があるアクションを定義します。各設定は次のことを行います。
# ''' "コースからのユーザの登録解除する" '''ユーザが外部ソースから削除されると、登録は完全に削除され、すべてのロールが削除されます。これは、一部のユーザデータと設定がコースの登録解除中にコースから削除されることを意味します(通常、成績、活動の試行などが含まれます)。
# ''' "ユーザの登録状態を保持する" '''ユーザが外部ソースから消えても、登録はそのまま維持され、ユーザはコースに参加して活動を実行したり、リソースにアクセスしたりできます。これは ''何もしない'' オプション。
# ''' "コース登録を無効にする" '''ユーザが外部ソースから消えると、ユーザの登録は一時停止され(ユーザはコースにアクセスできなくなりますが、ユーザデータと設定は保持されます)、ロールはそのまま保持されます。場合によっては、UIに表示するためにユーザが何らかの機能を備えた役割を必要とするため、これを使用することがあります。
# ''' "コース登録を無効にして、ロールを削除する" '''ユーザが外部ソースから消えると、登録が一時停止され、登録インスタンスによって割り当てられたロールが削除されます。ユーザが採点簿やその他の領域から ''消える'' 場合があることに注意してください。


== 登録 & ロール ==
==コースの作成==  


プラグイン設定ページの「enrol_database | defaultrole」では、コース追加時にユーザに割り当てられるロールを指定します。このデフォルトロール設定値は、コースのデフォルト設定 (初期値は「学生 (student)」) として割り当てられます。しかし、「リモートロールフィールド enrol_database | remoterolefield」にて、あなたはユーザロールの省略名を含む外部データベーステーブルのフィールドを指定することができます。例えば、この設定は適切に設定されたデータベースにより、学生および教師の両方をコースに登録するために使用できます。
オプションで、Moodleサイトに存在しないコースを作成できます。


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


Moodleサイト内に存在しないコースを任意に作成することができます。プラグイン設定内の「リモートの新しいコーステーブル (enrol_database newcoursetable)」オプションにコース一覧を含むテーブル名を入力してください。あなたは任意で新しいコースが作成されるカテゴリを指定することができます。また、新しいコースにコピーされる「テンプレート」コースを指定することもできます。
*この ''カテゴリID'' を、手動でカテゴリに割り当てることができる新しいカスタム ''カテゴリID番号フィールド'' と混同しないでください。 (トラッカー http://tracker.moodle.org/browse/MDL-28518 および http://tracker.moodle.org/browse/MDL-31845 を参照してください)。
*カテゴリIDデータを空のままにすると、コースはデフォルトのカテゴリに割り当てられます。
* Moodleに存在しないカテゴリにデータを割り当てた場合、コースは作成されません。


== 同期スクリプト ==
'''デフォルトの新しいコースカテゴリ'''は、コースが割り当てられ、作成されるカテゴリです。ただし、''新しいコースカテゴリIDフィールド'' のデータフィールドで設定を行う場合を除きます。


あなたのユーザの受講登録すべてを一度に同期できるスクリプトが提供されます - ユーザ受講登録の追加および解除 (そして、指定されていればコースを作成します)。同期スクリプト「enrol_database_sync.php」は「enrol/database」フォルダ内にあります。
'''新しいコーステンプレート'''指定することもできます。新しいコースのコピー元となる ''テンプレート'' コースです。このフィールドのデータは、テンプレートコースの'' shortname ''である必要があります。


このスクリプトは、外部データベースの受講登録情報とMoodleの受講登録情報を同期させるために、システムcronジョブよりコールされます。あなたは外部データベースに登録されているユーザすべてがMoodle内に作成されていることを確認する必要があります。あなたが外部認証プラグイン (db、ldap等) を使用している場合、このスクリプトを使用して同期する前に、それらのプラグインより提供されているスクリプトを使用することができます。
==外部データベース登録の同期(スケジュールされたタスクと非推奨のスクリプト)==


以下、Moodle 2.0のcronエントリ例です:
「外部データベース登録タスクの同期」と呼ばれるスケジュールされたタスクは、すべてのユーザ登録を一度に同期します-ユーザ登録の追加と削除の両方(および指定されている場合はコースの作成)(MDL-59986)。
    # 5 minutes past 4am
    5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php


Moodleに存在しないユーザはコースに登録できないため、外部登録に存在するすべてのユーザがMoodleにすでに作成されていることを確認する必要があることに注意してください。外部認証プラグイン(db、ldapなど)を使用している場合は、これらのプラグインによって提供されるスクリプトを使用して、このスクリプトを実行する前にユーザを同期できます。


メモ:
スケジュールされたタスクが無効になっている場合にこのタスクを実行できる非推奨のスクリプトも提供されています(スケジュールされたタスクが有効になっている場合、スクリプトは何もしません)。スクリプトはsync.phpと呼ばれ、enrol / database / cliフォルダーにあります。
 
このスクリプトは、システムのcronjobから呼び出されて、Moodleの登録を外部データベースの登録と同期します。
 
cronエントリの例
# 5 minutes past 4am
5 4 * * * /usr/bin/php -c /path/to/php.ini /path/to/moodle/enrol/database/cli/sync.php
 
ノート:  
* 大量のユーザ受講登録がある場合、「-d memory_limit=256M」を渡すことで、メモリ制限を上げることができます。
* 大量のユーザ受講登録がある場合、「-d memory_limit=256M」を渡すことで、メモリ制限を上げることができます。
* デバッグおよびログの目的のため、あなたは次のコマンドを自由に使うこともできます: -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
* デバッグおよびログの目的のため、あなたは次のコマンドを自由に使うこともできます: -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d html_errors=0
* これは、あなたのMoodleサイトに登録されているユーザのみに対して動作します (上記コメントをご覧ください)。
* これは、あなたのMoodleサイトに登録されているユーザのみに対して動作します (上記コメントをご覧ください)。


== セットアップ方法 ==
==登録同期のセットアップ(方法)==  
 
外部データベースの登録を有効にするには、少なくとも次の手順を実行する必要があります。すべてのユーザ/コースの組み合わせのレコードを含むデータベースに必要なテーブルは1つだけです。テーブルが大きい場合は、適切なインデックスが作成されていることを確認することをお勧めします。


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


* 既存のデータベースを使用、または新しいデータベースを作成してください。既存のテーブルを使用、または最低限の下記フィールドを含むテーブルを作成してください:
==フィールドマッピングの例:==
** コースID (Moodle内のユニークなコースIDに合致させるため)
Moodleデータベースからフィールドを選択してください:
** ユーザID (Moodle内のユニークなユーザIDに合致させるため)
** (任意) ロールID (Moodle内のユニークなロールIDに合致させるため)
* データベーステーブルを作成してください。テーブル内には、ユーザ/コースを組み合わせたレコードを作成してください。
* Moodle内で「サイト管理 > プラグイン > 受講登録 > 登録プラグイン管理」にアクセスした後、「利用可能なコース登録プラグイン」一覧の「外部データベース」設定をクリックしてください。
* ページ上部にてデータベースタイプを選択した後 (そのタイプに必要なPHP設定が施されていることを確認してください)、データベース接続に関する情報を入力してください。
* ページ中頃でMoodleおよび外部データベースのマッピングを作成します。
** enrol_localcoursefield / enrol_remotecoursefield - Moodle内のコース設定で独自にコースを識別するための名称です (例 idnumber)。外部データベース内でフィールドを合致させるための名称です。
** enrol_localuserfield / enrol_remoteuserfield - Moodle内のユーザプロファイルフィールドで独自にユーザを識別するためのフィールド名です (例 idnumber)。外部データベース内でフィールドを合致させるための名称です。
** enrol_db_localrolefield / enrol_db_remoterolefield - (任意) Moodle内のロール編集ページで独自にユーザを識別するためのフィールド名です (例 shortname)。外部データベース内でフィールドを合致させるための名称です。
* 外部データベースでロールが指定されていない場合、「デフォルトロール」にてユーザのコース受講登録時に割り当てられるロールを指定します。
* 最後のセクションでは、コースの自動作成を有効にします。
* 「変更を保存する」ボタンをクリックした後、外部データベース受講登録を有効にするため、目のアイコンをクリックしてください。


== 外部データベース登録がコース設定のユーザ登録方法に表示されません。なぜですか? ==
* enrol_localcoursefield:mdl_courseからのコース識別子、例えば "idnumber"
* enrol_localuserfield:mdl_userからのユーザ識別子、例えば「idnumber」
* enrol_localrolefield:(オプション)mdl_roleからのロール識別子、たとえば「shortname」


「コース > 設定 > ユーザ登録方法」には、インタラクティブ[[登録プラグイン#インタラクティブ登録|'''インタラクティブ'''登録プラグイン]]のみ表示されます。外部データベース登録はそのようなプラグインではないため、リストには表示されません。同様に、「設定 > ユーザ > 登録方法」内の各プラグイン編集ページに関しても、インタラクティブ登録プラグインにのみ登録開始および終了日が表示され、外部データベース登録では表示されません。
Moodleから選択したフィールド値と一致する外部データベースにビューを作成します:


この記事を執筆している現在、インタラクティブ登録プラグインは「手動」(「内部」として知られています)、「Paypal」および「authorize.net」のみです。
* enrol_remotecoursefield:外部データベーステーブルからの一致するコース識別子、たとえば「course_number」
* enrol_remoteuserfield:外部データベーステーブルの一致するユーザ識別子(例: "userid")
* enrol_remoterolefield:(オプション)外部データベーステーブルの一致するロール識別子(例: "role_name")


== フィールドマッピング例: ==
==潜在的な問題==  
あなたのフィールドをMoodleデータベースより選択してください:


*enrol_localcoursefield:  mdl_courseのコースIDです。例) idnumber
*言うまでもなく、外部データベースの整合性は重要です。データベースからデータが欠落している場合、ユーザがコースの一部またはすべてから登録解除される可能性があります。登録解除プロセスでは、それらをグループ割り当てから削除し、各モジュールタイプをポーリングして、必要に応じてモジュールにそのユーザのデータを削除するオプションを提供します(ただし、たとえば、フォーラム投稿は削除されません)。したがって、外部データベースのデータが常に正しいことを確認するために細心の注意を払うことが賢明です。
*enrol_localuserfield: mdl_userのユーザiDです。例) idnumber
* '''マイナーなセキュリティの問題'''学生を識別するために使用するID番号フィールドが学生によって(学生のプロファイルで)編集可能である場合、これを別の有効な学生のIDに変更する可能性があることを考慮してくださいそして、彼らがすべきでないリソースへのアクセスを取得します。 (ただし、それらはそのまま表示され、他のユーザになりすますことも、リソースにアクセスすることもできません。)この問題や同様の問題を防ぐには、ID番号と他のフィールドをロックして、ユーザが変更できないようにします。でこれを行う'''データマッピング'''のセクション''サイトの管理>プラグイン>認証>外部データベース'' 。
*enrol_localrolefield: (任意) mdl_roleロールIDです。例) shortname


必要であれば、選択したMoodleのフィールド値に合致するよう、あなたの外部データベーステーブルを選択してください:
==エラーと診断==


*enrol_remotecoursefield: コースIDに合致する外部データベーステーブルです。例) course_number
プラグインは、PHPエラーログ(php.iniファイルで定義)に記録される多数の診断メッセージやエラーを生成します。さらに、ユーザのデータベースにはあるがMoodleサイトに存在しないコースに関するメッセージは、デバッグがALLまたはDEVELOPERに設定されている場合にのみ生成されます。
*enrol_remoteuserfield: ユーザIDに合致する外部データベーステーブルです。例) userid
*enrol_remoterolefield: (任意) ロールIDに合致する外部データベーステーブルです。例) role_name


== 潜在的な欠点 (Potential Gotchas) ==
-vパラメータを指定して同期スクリプトを実行すると、詳細な進捗情報を取得できます。


* 言うまでもなく、外部データベースとの整合性は重要です。データベースからデータが喪失した場合、ユーザが一部またはすべてのコースから登録解除されてしまう可能性があります。登録解除プロセスでは、すべてのグループ割り当てを解除して、適切であれば、それぞれのモジュールにユーザデータを削除するよう指示します (しかし、例えばフォーラム投稿が削除されることはありません)。そのため、常に外部データベースの内容が正しいかどうか十分注意を払うことは適切な判断である言えます。
* '''マイナーセキュリティ問題''' あなたの学生を識別するために使用しているIDフィールドを (プロファイルページにて) 学生が編集できると仮定してみましょう。そして、このIDを有効な他の学生のIDに変更して、アクセスすべきではないリソースにアクセスを試みるとしましょう。この場合、ユーザはユーザ自身として表示され、他のユーザになりすますことはできません。そうでなければ、他のユーザのリソースにアクセスできてしまいます。


==Errors and Diagnostics==
php /path/to/moodle/enrol/database/cli/sync.php -v


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.
==こちらもご覧ください==


==関連情報==
* [http://moodle.org/mod/forum/discuss.php?d=74133 外部データベースの登録について誰かが説明してください??]フォーラムディスカッション
*Using Moodle [http://moodle.org/mod/forum/discuss.php?d=49475 MySQL enrolment plugin doesn't seem to work] forum discussion
* 設定の例 [https://docs.moodle.org/en/Talk:External_database_enrolment#Example_External_Enrollment] データベース登録設定の例
*Using Moodle [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


[[en:External_database_enrolment]]
[[en:External database enrolment]]
[[es:Inscripción por BasedeDatos externa]]
[[fr:Inscription par base de données externe]]
[[de:Einschreibung über externe Datenbank]]

2020年8月21日 (金) 07:08時点における最新版

外部データベースを使用して登録を制御する

受講登録をコントロールするため、あなたは (ほとんどの種類の) 外部データベースを使用することができます。あなたの外部データベースのフィールドに、コースID、ユーザIDおよび任意のロールフィールドが含まれていると仮定します。これらのフィールドは、あなたが選択したローカルのコーステーブル、ユーザテーブルおよびロールテーブルを参照します。

下記リストはMoodleでサポートされているデータソースです。あなたは適切なオプションを付けてPHPをコンパイルする、または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

登録および登録解除

外部データベース登録はユーザがMoodleにログインした時点で動作します。このプラグインでは、外部データベースのデータにもとづき、すべての該当するコースに対して学生の自動登録を試みます。コースが存在しない場合、任意に空のコースを作成します。正常動作を確認するには、学生としてログインした後、コースリストがあなたの希望どおりになっているかどうか確認してください。

ユーザがデータベースに存在しない場合、この処理ではコースからユーザを登録解除します。ユーザレコードはオリジナルの登録方法に従って登録されます。そのため、最初に外部データプラグインによって登録されたユーザに限って、外部データプラグインはユーザを登録解除することができます。

非表示のコース

コース利用にて 学生はこのコースを利用できない が設定されている場合、非表示のコースを無視する (enrol_db | ignorehiddencourse)を有効にすることで、コースを登録処理から除外することができます。

登録とロール

プラグイン設定ページの デフォルトロール enrol_database | defaultrole では、コース追加時にユーザに割り当てられるロールを指定します。このデフォルトロール設定値はコースのデフォルト設定 (初期値は学生)として割り当てられます。しかし、リモートロールフィールド enrol_database | remoterolefield にて、あなたはユーザロールの省略名を含む外部データベーステーブルのフィールドを指定することができます。例えば、この設定は適切に設定されたデータベースにより、学生および教師の両方をコースに登録するため使用できます。

登録解除

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

  1. "コースからのユーザの登録解除する" ユーザが外部ソースから削除されると、登録は完全に削除され、すべてのロールが削除されます。これは、一部のユーザデータと設定がコースの登録解除中にコースから削除されることを意味します(通常、成績、活動の試行などが含まれます)。
  2. "ユーザの登録状態を保持する" ユーザが外部ソースから消えても、登録はそのまま維持され、ユーザはコースに参加して活動を実行したり、リソースにアクセスしたりできます。これは 何もしない オプション。
  3. "コース登録を無効にする" ユーザが外部ソースから消えると、ユーザの登録は一時停止され(ユーザはコースにアクセスできなくなりますが、ユーザデータと設定は保持されます)、ロールはそのまま保持されます。場合によっては、UIに表示するためにユーザが何らかの機能を備えた役割を必要とするため、これを使用することがあります。
  4. "コース登録を無効にして、ロールを削除する" ユーザが外部ソースから消えると、登録が一時停止され、登録インスタンスによって割り当てられたロールが削除されます。ユーザが採点簿やその他の領域から 消える 場合があることに注意してください。

コースの作成

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

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

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

デフォルトの新しいコースカテゴリは、コースが割り当てられ、作成されるカテゴリです。ただし、新しいコースカテゴリIDフィールド のデータフィールドで設定を行う場合を除きます。

新しいコーステンプレート指定することもできます。新しいコースのコピー元となる テンプレート コースです。このフィールドのデータは、テンプレートコースの shortname である必要があります。

外部データベース登録の同期(スケジュールされたタスクと非推奨のスクリプト)

「外部データベース登録タスクの同期」と呼ばれるスケジュールされたタスクは、すべてのユーザ登録を一度に同期します-ユーザ登録の追加と削除の両方(および指定されている場合はコースの作成)(MDL-59986)。

Moodleに存在しないユーザはコースに登録できないため、外部登録に存在するすべてのユーザがMoodleにすでに作成されていることを確認する必要があることに注意してください。外部認証プラグイン(db、ldapなど)を使用している場合は、これらのプラグインによって提供されるスクリプトを使用して、このスクリプトを実行する前にユーザを同期できます。

スケジュールされたタスクが無効になっている場合にこのタスクを実行できる非推奨のスクリプトも提供されています(スケジュールされたタスクが有効になっている場合、スクリプトは何もしません)。スクリプトはsync.phpと呼ばれ、enrol / database / cliフォルダーにあります。

このスクリプトは、システムのcronjobから呼び出されて、Moodleの登録を外部データベースの登録と同期します。

cronエントリの例

# 5 minutes past 4am 
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つだけです。テーブルが大きい場合は、適切なインデックスが作成されていることを確認することをお勧めします。

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

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

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

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

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

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

潜在的な問題

  • 言うまでもなく、外部データベースの整合性は重要です。データベースからデータが欠落している場合、ユーザがコースの一部またはすべてから登録解除される可能性があります。登録解除プロセスでは、それらをグループ割り当てから削除し、各モジュールタイプをポーリングして、必要に応じてモジュールにそのユーザのデータを削除するオプションを提供します(ただし、たとえば、フォーラム投稿は削除されません)。したがって、外部データベースのデータが常に正しいことを確認するために細心の注意を払うことが賢明です。
  • マイナーなセキュリティの問題学生を識別するために使用するID番号フィールドが学生によって(学生のプロファイルで)編集可能である場合、これを別の有効な学生のIDに変更する可能性があることを考慮してくださいそして、彼らがすべきでないリソースへのアクセスを取得します。 (ただし、それらはそのまま表示され、他のユーザになりすますことも、リソースにアクセスすることもできません。)この問題や同様の問題を防ぐには、ID番号と他のフィールドをロックして、ユーザが変更できないようにします。でこれを行うデータマッピングのセクションサイトの管理>プラグイン>認証>外部データベース

エラーと診断

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

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


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

こちらもご覧ください