moodleで指定ユーザ以外からコースを見せない

Moodleは学校での授業のサポートとして利用が中心となる為なのかコースに対するアクセスコントロール系が弱く感じます。
コースを作成するとそのコース利用については制限をかけられますが、コースそのものは一覧に表示されますし、検索も可能です。

  • コースの登録キーが流出してしまい、想定外のユーザがコース登録してしまう。
  • 生徒またはグループ個別にコースを作成した場合、そのコースそのものを見せたくない。

 たとえば、研修会社がmoodleで各企業毎にコースを作成して利用する場合、企業間のコースを見せたくない。
そこで少し改造してみました。

機能

 ユーザ登録時に「コース制限」項目をONにしたユーザについては自分のコース以外は見えなくする。

設定方法

ユーザプロファイルフィールドに「コース制限(cocourcelimit)」という項目をチェックボックスで作成する。ユーザに自分で設定値を変えられたくないので「このフィールドを誰に表示しますか?」は非表示にする。
この項目をチェックすると本機能はONとなる。

主な修正箇所

フロントページの検索機能。コース制限ONユーザは非表示にするよう修正。
コースブロックのすべてのコース表示。コース制限ONユーザは非表示にするよう修正。
コース登録機能。コース制限ONユーザが直接URLを入力してしまった場合、はじくように修正

改造してみて・・・

moodleのユーザプロファイルフィールドに追加した項目がそのまま$USERに追加されるのが楽ですねえ。コースも同じように項目が簡単に追加できるとうれしいなあと。
ユーザ情報の表示項目(部署名など)の選択および表示順のカスタマイズ機能もつけてみたのでどこかのタイミングでまとめて公開します。
どうやって公開すればよいのかなあ?