如何在 Moodle 中使用用户 ID 找到用户角色

How can I find the user role using user id in moodle

我是 Moodle 的新手,我有以下代码:

$userDetails = $DB->get_record('user', array('id' => $singleuser->userid)); 
    var_dump($userDetails);
    echo $userDetails->firstname." ".$userDetails->lastname

Moodle 中有用户 table 的详细信息。如何找到教师、管理员、学生等角色?

这里我有用户 ID $singleuser->userid。我正在打印用户全名。我需要像下面这样的角色:

echo $userDetails->firstname." ".$userDetails->lastname.$role.

如何找到角色?请指导我。

Moodle 版本:2.9.1

试试这个,

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

或者试试这个,使用函数 get_user_roles,这将 return 在课程或站点或模块的上下文中分配给特定用户的角色列表

$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 中的哪个位置请求该角色。 Moodle(通常)没有 'student' 或 'teacher' 的全局概念 - 教师是特定课程的教师,学生是特定课程的学生。

假设您知道要为其显示角色的课程的 ID,您可以编写以下内容:

$rolestr = array();
$context = context_course::instance($courseid);
$roles = get_user_roles($context, $singleuser->userid);
foreach ($roles as $role) {
    $rolestr[] = role_get_name($role, $context);
}
$rolestr = implode(', ', $rolestr);
echo "The users roles are {$rolestr} in course {$courseid}";

moodle 在 about..etc

等静态页面中获取用户角色
$context = context_module::instance($cm->id);

$roles = get_user_roles($context, $USER->id, true);

foreach ($roles as $role) { 

}

我没有courseid,是否可以通过添加以下代码来获取角色。,

$context = context_system::instance();
$roles = get_user_roles($context, $userid, false);
$role = key($roles);
$roleid = $roles[$role]->roleid;