无法正确确定用户的能力

时间:2017-11-01 13:55:23

标签: moodle

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

所以为了根据这个改变图标,我这样做:

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

但每个人都在获得学生形象。我错过了什么?我还考虑过检查角色,但这也不起作用。有没有人遇到这个?

1 个答案:

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