ユーザーがサーバーにログインすると、コースコンテキストでユーザーの現在の役割が編集教師になります。私は学生への役割を変えたいと思う。コースの状況でユーザーの試行機能が存在するかどうかをテストしますか?
特定のコンテキストでユーザーの役割を学生に変更するには、role_assignmentテーブルの役割列をedittingteacherロールからstudentに手動で更新します。ユーザーがログアウトして再度ログインしない限り、変更は直接反映されません。
ユーザーの機能をテストするために、私は$ USERグローバル変数を使用します。 studentのUSERの役割を手動で変更しても、$ USERは更新されません。 $ USERは、ユーザーがログアウトして再度ログインした後にのみ変更を表示します。
問題はブラウザのキャッシュ、セッションに関係すると思います。 ロールを変更するとすぐに$ USERを直接更新できますか?
ユーザーの役割を変更するためのコードです。
$ index = $ context-> depth-1; $ array = explode( "/"、$ context-> path);
$ context_id = $ array [$ index];
//は、ユーザーID
$ userIdを= $ USER-> IDでログインします。
$ user- $ DB-> get_record( 'role_assignments'、array( 'contextid' => $ array [$ index]、 'userid' => $ userId));
$ user-> roleid = 5;
$ roles = get_user_roles($ context、$ userId);
$ user-> timemodified = time();
$ DB-> update_record( 'role_assignments'、$ user、$ bulk = false);
ありがとう@davosmith、それは魅力のように働いた。 – rahul