在Moodle 3.0中仅基于用户ID获取角色

时间:2016-10-13 12:12:47

标签: moodle

目前在我的系统中,我们有4个角色:课程管理员,培训师,学生,企业用户。

登录后,我们需要重定向到自定义仪表板,我们将在其中显示自定义功能。

所以我想知道如何实现这一点,因为我们只有用户ID。

我根据课程

获得了选项
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);

if (!has_capability('moodle/course:viewhiddensections', $coursecontext)) {

echo "is Student<br/>";
}

但在我的情况下,我们只有用户ID。我们如何实现这个?我希望Moodle做这么小的检查并不是那么复杂。

1 个答案:

答案 0 :(得分:0)

您可以通过将第三个参数传递给has_capability来检查任何用户的功能。

if (!has_capability('moodle/course:viewhiddensections', $coursecontext, $userid)) {
    ...
}

请注意,使用Moodle 3.0,您应该使用以下方式获取上下文:

$context = context_course::instance($courseid);

如果您不在课程的上下文中,则需要在系统上下文中分配角色。要获取系统上下文,您可以使用context_system::instance()

最后,如果您在每个课程中单独分配角色而不是在系统中(我怀疑您这样做),则没有简单的方法来确定登录的用户类型。在这种情况下,所有用户都将是直到他们进入课程。为了消除用户的角色,您必须单独检查每个课程背景。

如果在您的方案中,用户在课程A中不能student而在课程B中不能trainer,那么您可以将所有学生添加到同一群组Student中,并执行相同操作彼此的角色。登录后,您可以查看他们所在的群组。您甚至可以使用群组同步注册插件,这样您就不必再管理注册了。