目前在我的系统中,我们有4个角色:课程管理员,培训师,学生,企业用户。
登录后,我们需要重定向到自定义仪表板,我们将在其中显示自定义功能。
所以我想知道如何实现这一点,因为我们只有用户ID。
我根据课程
获得了选项$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
if (!has_capability('moodle/course:viewhiddensections', $coursecontext)) {
echo "is Student<br/>";
}
但在我的情况下,我们只有用户ID。我们如何实现这个?我希望Moodle做这么小的检查并不是那么复杂。
答案 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
中,并执行相同操作彼此的角色。登录后,您可以查看他们所在的群组。您甚至可以使用群组同步注册插件,这样您就不必再管理注册了。