2013-10-02 22 views
2

我的場景;課程完成更新外部數據庫

Moodle的用戶完成一門課程。一旦發生這種情況,我想更新外部數據庫。我的理解是,每當cron作業運行時,都會觸發course_completed事件。

哪些是用一些簡單的值(例如用戶名/ ID,課程ID以及可能完成日期)更新已完成課程的外部數據庫的最佳方法?

我寧願不要破解完成/ cron.php來做到這一點,但會如果我必須!

回答

2

您將需要創建一個本地插件。

http://docs.moodle.org/dev/Local_plugins

創建/本地/ 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文件來安裝插件並添加事件處理程序。

然後在

/local/mypluginname/lib.pgp 

此創建一個功能

function local_mypluginname_course_completed($eventdata) 

將被調用時,cron會

,找出$內容EVENTDATA看看

events_trigger('course_completed', $this->get_record_data()); 

/completion/completion_completion.php 

要更新遠程數據庫的看看代碼數據庫認證

/auth/db/auth.php 

喜歡的東西

$mydb = ADONewConnection('mysql'); 
$mydb->Connect($dbhost, $dbuser, $dbpass, $dbname, false); 
$mydb->Execute($insertsql); 
$mydb->Close(); 
+0

感謝您深入的答案,這真的幫助我解決了我的問題! –