Вопрос:
Я новичок в Moodle и у меня есть следующий код:
$userDetails = $DB->get_record(‘user’, array(‘id’ => $singleuser->userid)); var_dump($userDetails); echo $userDetails->firstname.» «.$userDetails->lastname
Он содержит детали пользовательской таблицы в Moodle. Как я могу найти такую роль, как Учитель, Админ, ученик?
Здесь у меня есть userid $singleuser->userid. Я печатаю полное имя пользователя. Мне нужна роль вместе с ним:
echo $userDetails->firstname.» «.$userDetails->lastname.$role.
Как я могу найти роль? Пожалуйста, направляйте меня.
Версия Moodle: 2.9.1
Лучший ответ:
Вам нужно знать, где в Moodle вы просите о роли. У Moodle нет (обычно) глобальной концепции “ученика” или “учителя” – учитель – учитель на определенном курсе, студент – студент по определенному курсу.
Предполагая, что вы знаете идентификатор курса, на котором вы хотите отобразить роль (ы), вы можете написать следующее:
$rolestr = array(); $context = context_course::instance($courseid); $roles = get_user_roles($context, $singleuser->userid); foreach ($roles as $role) { $rolestr[] = role_get_name($role, $context); } $rolestr = implode(‘, ‘, $rolestr); echo «The users roles are {$rolestr} in course {$courseid}»; Ответ №1
moodle получает роли пользователя в статических страницах, например about..etc
$context = context_module::instance($cm->id); $roles = get_user_roles($context, $USER->id, true); foreach ($roles as $role) { } Ответ №2
попробуй это,
$context = get_context_instance (CONTEXT_SYSTEM); $roles = get_user_roles($context, $USER->id, false); $role = key($roles); $roleid = $roles[$role]->roleid;
или попробуйте это, используя функцию get_user_roles, и это вернет список ролей, назначенных конкретному пользователю в контексте курса или сайта или модуля
$context = get_context_instance(CONTEXT_COURSE, $courseid, true); $roles = get_user_roles($context, $USER->id, true);
Вы также можете получить роли в контексте модуля.
$context = get_context_instance(CONTEXT_MODULE, $cm->id, true); $roles = get_user_roles($context, $USER->id, true);