Мой сценарий;
Пользователь в Moodle завершает курс. Я хочу обновить внешнюю базу данных, как только это произойдет. Я понимаю, что событие course_completed запускается каждый раз при запуске задания cron.
Каков наилучший подход к обновлению внешней базы данных с помощью некоторых простых значений, например Username / ID, CourseID и, возможно, даты завершения, завершенных курсов?
Я бы предпочел не взломать завершение / cron.php, чтобы сделать это, но, если потребуется!
Вам нужно будет создать локальный плагин.
http://docs.moodle.org/dev/Local_plugins
Создание плагина в / local / myplugnname
Создайте файл events.php
/local/mypluginname/db/events.php
С этим
$handlers = array ( 'course_completed' => array ( 'handlerfile' => '/local/mypluginname/lib.php', 'handlerfunction' => 'local_mypluginname_course_completed', 'schedule' => 'cron', 'internal' => 1, ),
Загляните сюда для получения дополнительной информации http://docs.moodle.org/dev/Events_API#Handling_an_event
Вам понадобится файл version.php для установки плагина и добавления обработчика событий.
Затем создайте функцию
function local_mypluginname_course_completed($eventdata)
в
/local/mypluginname/lib.pgp
Это будет вызываться при запуске cron
Чтобы узнать содержимое $ eventdata, посмотрите
events_trigger('course_completed', $this->get_record_data());
в
/completion/completion_completion.php
Чтобы обновить удаленную базу данных, посмотрите код в режиме проверки подлинности db
/auth/db/auth.php
Что-то вроде
$mydb = ADONewConnection('mysql'); $mydb->Connect($dbhost, $dbuser, $dbpass, $dbname, false); $mydb->Execute($insertsql); $mydb->Close();