Moodle服务挂钩并与另一个系统集成



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);

相关内容

最新更新