我的情景;
Moodle的用户完成了一门课程。一旦发生这种情况,我想更新外部数据库。我的理解是每次运行cron作业时都会触发course_completed事件。
使用一些简单的值更新外部数据库的最佳方法,例如完成的课程的用户名/ ID,课程ID和完成日期?
我宁愿不破解完成/ cron.php来执行此操作,但如果必须的话,我会这样做!
答案 0 :(得分:2)
您需要创建一个本地插件。
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)
in
/local/mypluginname/lib.pgp
当cron运行
时将调用此方法要查找$ eventdata的内容,请查看
events_trigger('course_completed', $this->get_record_data());
in
/completion/completion_completion.php
要更新远程数据库,请查看db authentication中的代码
/auth/db/auth.php
像
这样的东西$mydb = ADONewConnection('mysql');
$mydb->Connect($dbhost, $dbuser, $dbpass, $dbname, false);
$mydb->Execute($insertsql);
$mydb->Close();