我在检查给定用户的功能时遇到了一些问题。我正在尝试根据用户的能力更改用户的图标 - 即能够对论坛帖子进行评分。系统权限似乎设置正确,令人费解。当我以管理员身份进入系统并检查功能概述时,我可以看到学生无法评价论坛帖子,但教师可以。
所以为了根据这个改变图标,我这样做:
if (!$this->courseid){
$context = context_user::instance($this->user->id, IGNORE_MISSING);
}else{
$context = context_course::instance($this->courseid, MUST_EXIST);
}
if (has_capability('mod/forum:rate', $context, $this->user->id)){
$filename = 'instructor';
}else{
$filename = 'student';
}
但每个人都在获得学生形象。我错过了什么?我还考虑过检查角色,但这也不起作用。有没有人遇到这个?
答案 0 :(得分:1)
要检查' mod / forum:rate' 功能,您需要提供 context_module 类型的上下文对象:
// $cmid = id from course_modules table
$context = context_module::instance($cmid, MUST_EXIST);
if (has_capability('mod/forum:rate', $context, $userid)){
$filename = 'instructor';
}else{
$filename = 'student';
}
检查课程中学生/教师角色的另一种方法(假设学生不允许编辑或更新课程):
$context = context_course::instance($courseid, MUST_EXIST);
if(has_capability ('moodle/course:update', $context, $userid)) {
// Teacher
$filename = 'instructor';
}
else {
// Student
$filename = 'student';
}