Эти документы разработчик - https://docs.moodle.org/dev/Main_Page
ЗАВИСИТ, какой плагин нужно развивать - https://docs.moodle.org/dev/Plugin_types
Если его часть курса, то вам необходимо будет разработать модуль активности - https://docs.moodle.org/dev/Activity_modules
Или если нет, то вам, вероятно, понадобится локальный плагин - https://docs.moodle.org/dev/Local_plugins
ОБНОВЛЕНИЕ:
Используйте локальный плагин и ответьте на один из событий викторины.
https://docs.moodle.org/dev/Event_2#Event_observers
Это обзор:
Создать локальный плагин - https://docs.moodle.org/dev/Local_plugins
Тогда в local/yourpluginname/db/events/php
есть что-то вроде
defined('MOODLE_INTERNAL') || die();
$observers = array(
array(
'eventname' => '\mod_quiz\event\attempt_submitted',
'includefile' => '/local/yourpluginname/locallib.php',
'callback' => 'local_yourpluginname_attempt_submitted',
'internal' => false
),
);
Это будет реагировать на attempt_submitted
случае, когда пользователь отправляет викторину. Я предполагаю, что это событие, которое вам нужно будет использовать. Если нет, то есть и другие здесь /mod/quiz/classes/event/
Тогда в /local/yourpluginname/locallib.php
есть что-то вроде
/**
* Handle the quiz_attempt_submitted event.
*
* @global moodle_database $DB
* @param mod_quiz\event\attempt_submitted $event
* @return boolean
*/
function local_yourpluginname_attempt_submitted(mod_quiz\event\attempt_submitted $event) {
global $DB;
$course = $DB->get_record('course', array('id' => $event->courseid));
$attempt = $event->get_record_snapshot('quiz_attempts', $event->objectid);
$quiz = $event->get_record_snapshot('quiz', $attempt->quiz);
$cm = get_coursemodule_from_id('quiz', $event->get_context()->instanceid, $event->courseid);
if (!($course && $quiz && $cm && $attempt)) {
// Something has been deleted since the event was raised. Therefore, the
// event is no longer relevant.
return true;
}
// Your code here to send the data to an external server.
return true;
}
Это должно вам начать работу.
спасибо, я хочу создать плагин, который управляет действиями пользователя в викторине и отправляет его на внешний сервер. Это плагин активности? А как экспортировать плагин после создания? Просто поместите это .zip? –
Я не уверен, что вы подразумеваете под «контролем действий пользователя» - вы хотите отправить данные на внешний сервер, когда пользователь отправляет викторину? –
да, или где выбрать ответ на вопрос в викторине ... что-то вроде этого –