10

ムードルでログインしているユーザーのコンテキスト/役割を取得する方法は? コンテキスト認識ブロックを実装しようとしています。このブロックは、気分に基づいてユーザーに適切なクイズを提案します。

役割は、教師、生徒、教師アシスタント、または管理者です。get_context_instance()&関数は既に見つけましたhas_compatibility()が、この目的での使用方法がわかりません。

4

6 に答える 6

10

ユーザーが管理者かどうかを確認する

$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";
}
于 2014-08-07T10:33:44.620 に答える
9
$context = get_context_instance (CONTEXT_SYSTEM);
$roles = get_user_roles($context, $USER->id, false);
$role = key($roles);
$roleid = $roles[$role]->roleid;

それは私に働きます

于 2012-06-14T05:37:11.477 に答える
6

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);
于 2013-12-30T07:50:20.397 に答える
3

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サイトを持つことは完全に可能です(しかし可能性は低いです)ことに注意してください

于 2012-05-15T13:35:29.980 に答える