Moodle 3.1.9 (Build: 20171113) でユーザのアップロードを確認させて頂きましたが、「アップロードユーザプレビュー」画面に「ロール」セクションが見当たらないようです。
どのようにして「アップロードユーザプレビュー」画面に「ロール」セクションを表示されましたでしょうか?
下記2つのMoodleをクリーンインストールして確認させて頂きましたが、「ロール」セクションは表示されないようです。
- Moodle 3.1.4 (Build: 20170109)
- Moodle 3.1.8 (Build: 20170911)
過去のMoodle 3.1.xシリーズは下記より入手可能です。
[Index of /stable31]
https://download.moodle.org/stable31/
お世話になっております。
インストール&初期設定を担当した者にも確認しましたが、
やはりプレビュー画面に「ロール」セクションを表示させる為に、
特別な設定は行っていないとのことでした…;(開発環境のVer3.1.4でも表示されておりました。何故……)
開発環境のマネージャー権限でアップロードを試したところ、無事にコースに「student」として登録出来たので、
開発(3.1.4)と本番(3.1.8)で異なるところを追ってみました。
・アップロードに関するソースは変更なし
・ケイパビリティーやロールの設定も(ユーザ登録に関係しそうなところは)同じ
・本番でも、マネージャー権限→管理者権限に変更すると、アップロードできる
先日ご教示いただいたプログラム等により、原因がロール・アサイン関連にあることは確実だったので
アップロード時の判定から、
一点、思い当たるところとして
ユーザのデフォルトホームページ
defaulthomepage が、遷移の変更により
開発では「ユーザプリファレンス」
本番では「サイト」
と変更になったことが原因ではないかと推察しました。
本番環境では /admin/roles/permissions.php?contextid=XXX にアクセスしたところ
「ベースロールのケイパビリティをオーバーライドできません。」と弾かれた為
無理矢理 /admin/tool/uproaduser/locallib.phpの
uu_allowed_roles() 及び uu_allowed_roles_cache() 内で、get_assignable_roles()する際に渡すcontextを
context_course::instance(SITEID)からcontext_systeminstance()へ変更したところ、
現設定でも、無事アップロード出来るようになりました。
まさかフロントページのロールが絡んでいるとは思わず、
判明までにだいぶ時間がかかりました。。 大変お騒がせいたしました!