首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Moodle 3.0中仅根据用户Id获取角色

在Moodle 3.0中仅根据用户Id获取角色
EN

Stack Overflow用户
提问于 2016-10-13 20:12:47
回答 1查看 453关注 0票数 1

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

一旦登录,我们需要重定向到自定义仪表板,在那里我们将显示自定义功能。

所以我想知道,考虑到我们只有用户id,我们如何实现这一点。

我得到了基于课程的选项

代码语言:javascript
运行
复制
$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);

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

echo "is Student<br/>";
}

但在我的例子中,我们只有用户id。我们如何实现这一点呢?我希望Moodle做这么小的检查不是那么复杂。

EN

回答 1

Stack Overflow用户

发布于 2016-10-14 17:26:52

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

代码语言:javascript
运行
复制
if (!has_capability('moodle/course:viewhiddensections', $coursecontext, $userid)) {
    ...
}

请注意,在Moodle 3.0中,您应该使用以下命令获取上下文:

代码语言:javascript
运行
复制
$context = context_course::instance($courseid);

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

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

如果在您的场景中,用户在课程A中不能是student,在课程B中不能是trainer,那么您可以将所有学生添加到队列Student中,并对每个其他角色执行相同的操作。登录后,您可以查看他们所在的队列。你甚至可以使用队列同步注册插件,这样你就不再需要管理注册了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40020688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档