Не в состоянии правильно определить возможности пользователя
У меня возникли проблемы с проверкой возможностей данного пользователя. Я пытаюсь изменить значок пользователя, основываясь на его возможностях, а именно на возможности оценивать сообщение на форуме. Системные разрешения, кажется, установлены правильно, что вызывает недоумение. Когда я захожу в систему как администратор и проверяю обзор возможностей, я вижу, что ученик не может оценивать сообщение на форуме, а учитель может.
поэтому, чтобы изменить значок на основе этого, я делаю:
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 ответ
Чтобы проверить возможность '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';
}