Вы можете закодировать решение следующим образом:
- Создайте базовый плагин с обычным стандартным кодом (version.php и т. Д.), Например, локальный плагин.Вы можете использовать этот другой плагин для генерации стандартного кода: https://moodle.org/plugins/tool_pluginskel
- В 'db / services.php' зарегистрируйте новую внешнюю функцию и представьте ее в новой или существующей службе.Документы здесь: https://docs.moodle.org/dev/Adding_a_web_service_to_a_plugin и здесь https://docs.moodle.org/dev/Web_services_API.Например:
$functions = [
'local_myplugin_get_user_roles' => [
'classname' => external::class,
'methodname' => 'get_user_roles',
'description' => 'gets user roles',
'type' => 'read',
],
];
$services = [
'My services' => [
'functions' => [
'local_myplugin_get_user_roles',
],
'enabled' => 1,
'restrictedusers' => 0,
'shortname' => 'local_myplugin',
'downloadfiles' => 0,
'uploadfiles' => 0,
],
];
Напишите внешний класс (например, в файле external.php) для вашего плагина (на который есть ссылка в определении функции, которое вы кодировали ранее).В этом классе напишите код для определенной внешней функции (которая будет извлекать роли для пользователя, например, с заданным идентификатором пользователя), включая обработчики ввода и вывода.Пример здесь:
https://docs.moodle.org/dev/External_functions_API#externallib.php В вашей внешней функции, чтобы получить список ролей пользователя с учетом контекста, идентификатора пользователя и т. Д., Вы можете использовать глобальный помощник
get_user_roles
.Не забудьте написать в этой внешней функции код, необходимый для проверки входных параметров и т. Д. Чтобы правильно представить новую службу и внешнюю функцию внешней системе, необходимо следовать этим инструкциям по настройке в качестве администратора Moodle.: YOUR_MOODLE_INSTANCE_URL / admin / settings.php? Section = веб-сервисы overview.В конце вы создадите пользователя (потребителя веб-службы) и токен, который вы можете установить во внешней системе для использования службы Moodle.
Счастливое кодирование.