Moodle是否支持服务挂钩(或某种触发器),以便在用户触发事件时可以更新另一个系统。
我们想要使用Moodle的公司已经拥有一个存储所有学习和课程管理的大型数据库,但现在他们希望将大量课程用于电子学习实施。然而,由于并非所有课程和学习都是电子学习,因此他们无法摆脱现有系统,因此我的目的是将当前系统作为所有这些细节的主要存储,但使用Moodle提供电子学习方面事情,将信息反馈给主要商店。
如果我的Moodle网站上的用户完成任务或注册课程等,是否有办法将此事件“广播”到另一个环境中运行的其他系统,提供事件的所有详细信息?我希望在当前系统中创建一个REST API来处理来自我的Moodle站点的http请求。
非常感谢任何反馈
答案 0 :(得分:1)
您可以使用事件api - https://docs.moodle.org/dev/Events_API
创建一个本地插件,例如:
/local/external_update
创建events.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);