2012-05-14 3 views
8

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

役割は教師、学生、教師のアシスタントまたは管理者になることができます。私は既にget_context_instance() & has_compatibility()の機能を見つけましたが、私はこの目的のためにそれらをどのように使用するのか分かりません。

+0

役割とコンテキストの結果を使用しているユーザーを確認するには、Moodleの中で最も複雑な概念の一つですが、短いバージョンは、一般的文脈であります単一のコース、単一のカテゴリ、またはサイト全体に適用されます。そのコンテキスト内で役割が付与され、そのコンテキスト内でユーザーに機能が割り当てられます。 –

答えて

3

moodleでは、ロールはコンテキストに基づいています。 このコードスニペットが役立つと思います。

グローバルな$ COURSE、$ USER;

デフォルトの学生なしのMoodleサイトを持っていることは完全に可能(ただし、そう)であることを念頭に置いて
$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/>"; 
} 

クマと教師の役割

+0

このコードは良いですが、問題があります。私はビュー/コースではないので、私はホームページにいると仮定し、私は役割が何であるかを知りたい。これはうまくいかない – Ehsan

9
$context = get_context_instance (CONTEXT_SYSTEM); 
$roles = get_user_roles($context, $USER->id, false); 
$role = key($roles); 
$roleid = $roles[$role]->roleid; 

それはMoodleの2で私に

6

に動作します。 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); 
1

:教師の役割IDは通常3である、と学生の役割IDは通常5です

if (user_has_role_assignment($user1->id, $roleid)) 
    echo "User is a teacher in some course"; 

が、サイト管理 - >ユーザー - >権限 - >ロールの定義でテーブルを調べることができます

1人のユーザーがさまざまな役割を持つことができます。関数user_has_role_assignmentは、システム全体のどの役割をテストしているようです。

8

adminまたはない

$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"; 
} 
関連する問題