我的情况;
Moodle中的用户完成了一个课程。一旦发生这种情况,我想更新一个外部数据库。我的理解是每次执行cron作业时都会触发course_completed事件。
用已完成课程的一些简单值(例如用户名/ ID,CourseID以及也许是完成日期)更新外部数据库的最佳方法是什么?
我宁愿不破解completion / 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();