无法正确确定用户的能力

unable to determine capabilities of user properly

我在检查给定用户的能力时遇到了一些问题。我正在尝试根据用户的能力更改用户的图标 - 即能够对论坛进行评分 post。系统权限似乎设置正确,这令人费解。当我以管理员身份进入系统并查看功能概览时,我可以看到学生无法对论坛进行评分 post 但教师可以。

因此,为了基于此更改图标,我这样做:

    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';
    }

但每个人都得到了学生形象。我错过了什么?我还考虑过检查角色,但这也不起作用。有人 运行 也参与其中吗?

要检查 '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';
}