2016-10-13 9 views
0

В настоящее время в моей системе у нас есть 4 роли: администратор курса, тренер, студент, корпоративный пользователь.Получение роли, основанной только на идентификаторе пользователя в Moodle 3.0

После входа в систему нам необходимо перенаправить на пользовательскую панель мониторинга, где будут отображаться пользовательские функции.

Так что мне интересно, как мы можем реализовать это, учитывая, что у нас есть только идентификатор пользователя.

я получил вариант на основе курса

$coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); 

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

echo "is Student<br/>"; 
} 

Но в моем случае, у нас есть только идентификатор пользователя. Как мы можем это реализовать? Надеюсь, Moodle не так сложно сделать такую ​​небольшую проверку.

ответ

0

Вы можете проверить возможности любого пользователя, передав третий аргумент has_capability.

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

Обратите внимание, что с Moodle 3.0 вы должны получить контекст, используя:

$context = context_course::instance($courseid); 

Если вы не в контексте, конечно, роли тогда должны быть назначены в контексте системы. Чтобы получить системный контекст, вы можете использовать context_system::instance().

Наконец, если вы назначаете свои роли индивидуально в каждом курсе, а не в системе (что, как я подозреваю, вы это делаете), нет простого способа определить, какой тип пользователя вошел в систему. В этом случае все пользователи будут быть теми же, пока они не пройдут курс. Чтобы укоренить роли пользователя, вам нужно будет проверять каждый курс.

Если в вашем сценарии пользователь не может быть student на курсе и trainer в курсе B, то вы можете добавить все ваши студент в когорте Student, и сделать то же самое для каждой другой роли. При входе в систему вы можете проверить, в какой группе они находятся. Возможно, вы даже сможете использовать плагин регистрации Cohort sync, так что вам больше не нужно управлять регистрацией.