目前在我的系统中,我们有4个角色:课程管理员,培训师,学生,企业用户。
一旦登录,我们需要重定向到自定义仪表板,在那里我们将显示自定义功能。
所以我想知道,考虑到我们只有用户id,我们如何实现这一点。
我得到了基于课程的选项
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);
if (!has_capability('moodle/course:viewhiddensections', $coursecontext)) {
echo "is Student<br/>";
}
但在我的例子中,我们只有用户id。我们如何实现这一点呢?我希望Moodle做这么小的检查不是那么复杂。
发布于 2016-10-14 17:26:52
您可以通过向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
中,并对每个其他角色执行相同的操作。登录后,您可以查看他们所在的队列。你甚至可以使用队列同步注册插件,这样你就不再需要管理注册了。
https://stackoverflow.com/questions/40020688
复制相似问题