簡體   English   中英

Moodle如何找出登錄用戶的角色

[英]Moodle how to find out the role of the logged in user

如何在moodle中獲取登錄用戶的上下文/角色? 我正在嘗試實現一個上下文感知塊。 該塊將基於他們的心情向其用戶建議正確的測驗。

角色可以是教師,學生,教師助理或管理員。 我已經找到了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網站

您可以通過以下方式測試用戶具有的角色:

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

教師的角色ID通常為3,學生的角色ID通常為5,但您可以在站點管理 - >用戶 - >權限 - >定義角色中查看表格。

請注意,一個用戶可以擁有不同的角色。 函數user_has_role_assignment似乎測試了他在系統范圍內的角色。

包括庫'accesslib.php',然后使用'is_siteadmin()'函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM