ムードルでログインしているユーザーのコンテキスト/役割を取得する方法は? コンテキスト認識ブロックを実装しようとしています。このブロックは、気分に基づいてユーザーに適切なクイズを提案します。
役割は、教師、生徒、教師アシスタント、または管理者です。get_context_instance()
&関数は既に見つけましたhas_compatibility()
が、この目的での使用方法がわかりません。
ユーザーが管理者かどうかを確認する
$admins = get_admins();
$isadmin = false;
foreach($admins as $admin) {
if ($USER->id == $admin->id) {
$isadmin = true;
break;
}
}
結果を関数に使用する
if ($isadmin) {
echo "you are an admin";
} else {
echo "you are not an amidn";
}
$context = get_context_instance (CONTEXT_SYSTEM);
$roles = get_user_roles($context, $USER->id, false);
$role = key($roles);
$roleid = $roles[$role]->roleid;
それは私に働きます
Moodle 2.x では、関数get_user_roles
を使用できます。これにより、コース、サイト、またはモジュールのコンテキストで特定のユーザに割り当てられたロールのリストが返されます。
$context = get_context_instance(CONTEXT_COURSE, $courseid, true);
$roles = get_user_roles($context, $USER->id, true);
モジュールのコンテキストでロールを取得することもできます。
$context = get_context_instance(CONTEXT_MODULE, $cm->id, true);
$roles = get_user_roles($context, $USER->id, true);
moodle では、ロールはコンテキストに基づいています。このコード スニペットが役立つと思います。
グローバル $COURSE、$USER;
$context = get_context_instance(CONTEXT_COURSE,$COURSE->id);
if (has_capability('moodle/legacy:student', $context, $USER->id, false) ) {
echo "Student";
}
if (has_capability('moodle/legacy:editingteacher', $context, $USER->id, false)) {
echo "is Teacher<br/>";
}
if (has_capability('moodle/legacy:admin', $context, $USER->id, false)) {
echo "is ADMIN<br/>";
}
デフォルトの学生と教師の役割なしでMoodleサイトを持つことは完全に可能です(しかし可能性は低いです)ことに注意してください