Moodle是否支持服务挂钩(或某种触发器),以便在用户触发事件时更新另一个系统。
我们想使用Moodle的公司已经有一个大型数据库,存储他们所有的学习和课程管理,但现在希望将他们的许多课程用于电子学习。然而,他们不能离开目前的系统,因为并非所有课程和学习都将是电子学习,所以我的意图是将当前系统作为所有这些细节的主要存储库,但使用Moodle提供电子学习方面的内容,将信息反馈到主存储库。
如果我的Moodle网站上的用户完成了一项任务,或注册了一门课程等,有没有办法将此事件"广播"到另一个环境中运行的其他系统,提供事件的所有细节?我希望在当前的系统中创建一个REST API来处理来自我的Moodle站点的http请求。
非常感谢您的任何反馈
您可以使用事件api-https://docs.moodle.org/dev/Events_API
创建一个本地插件,例如:
/local/external_update
创建事件.php
/local/external_update/db/events.php
它有这样的东西-例如:user_enrolled事件
$handlers = array (
'user_enrolled' => array (
'handlerfile' => '/local/external_update/lib.php',
'handlerfunction' => 'local_external_update_user_enrolled',
'schedule' => 'instant',
'internal' => 1,
),
);
则在/local/external_update/lib.php
中具有
function local_external_update_user_enrolled($eventdata) {
// Do some rest stuff.
}
然后创建一个version.php并安装插件,然后将注册事件处理程序。
已经有一些事件了,但如果你找不到现有的事件,那么创建一个事件很容易——必要时只需将其添加到核心代码中。
events_trigger('event_name', $eventdata);