如何在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中用户表的详细信息。我怎样才能找到像老师、管理员、学生这样的角色?

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

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

如何查找角色?请给我指路。

Moodle Version: 2.9.1

您需要知道您在Moodle中的哪个位置请求角色。Moodle(通常)没有"学生"或"老师"的全局概念——老师是特定课程的老师,学生是特定课程的学生。

假设您知道要在其中显示角色的课程的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.等

$context = context_module::instance($cm->id);
$roles = get_user_roles($context, $USER->id, true);
foreach ($roles as $role) { 
}

try this,

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

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

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

你也可以在module的上下文中获取角色。

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

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

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