如何在moodle中使用用户ID查找用户角色

时间:2015-08-06 13:06:44

标签: php 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版本:2.9.1

3 个答案:

答案 0 :(得分:2)

你需要知道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}";

答案 1 :(得分:2)

moodle 在静态页面中获取用户角色,例如about..etc

$context = context_module::instance($cm->id);

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

foreach ($roles as $role) { 

}

答案 2 :(得分:0)

试试这个,

$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);

您还可以在模块的上下文中获取角色。

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