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

时间:2014-10-13 13:32:07

标签: moodle

Moodle是否支持服务挂钩(或某种触发器),以便在用户触发事件时可以更新另一个系统。

我们想要使用Moodle的公司已经拥有一个存储所有学习和课程管理的大型数据库,但现在他们希望将大量课程用于电子学习实施。然而,由于并非所有课程和学习都是电子学习,因此他们无法摆脱现有系统,因此我的目的是将当前系统作为所有这些细节的主要存储,但使用Moodle提供电子学习方面事情,将信息反馈给主要商店。

如果我的Moodle网站上的用户完成任务或注册课程等,是否有办法将此事件“广播”到另一个环境中运行的其他系统,提供事件的所有详细信息?我希望在当前系统中创建一个REST API来处理来自我的Moodle站点的http请求。

非常感谢任何反馈

1 个答案:

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