Получить роли пользователей через Moodle Webservice - PullRequest
0 голосов
/ 04 июля 2019

Я пытался найти способ вернуть роли пользователя через API веб-сервиса Moodle.

Я знаю, что для этого нет конечных точек, но я не могу получить их непосредственно из базы данных, потому что янет доступа к базе данных клиента.

Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 19 июля 2019

Вы можете закодировать решение следующим образом:

  1. Создайте базовый плагин с обычным стандартным кодом (version.php и т. Д.), Например, локальный плагин.Вы можете использовать этот другой плагин для генерации стандартного кода: https://moodle.org/plugins/tool_pluginskel
  2. В '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.

Счастливое кодирование.

...