2016-05-31 66 views
0

我試圖創建一個按鈕到一個Moodle課程,讓學生可以下載所有資源,比可以下載。從moodle課程做一個按鈕「下載所有文件」

任何提示?

我檢查de mdl_course並有課程編號。 然後我去mdl_resource,在那裏我找到了我剛剛添加到課程中的資源。 然後我去mdl_files,我找到了我剛剛上傳的文件。

但是不知道如何製作一個按鈕來查找課程中的所有文件。 任何提示?

問題是,moodle數據庫不清楚。例如:我有課程ID,並在mdl_resources中搜索,我找到了那個course_id的資源。但是在mdl_files中沒有使用course id,它使用context_id(對應於mdl_context),它具有與課程id不相關的instance_id。我被封鎖了。

我在Centos上使用Moodle 2.7。

+0

[你到目前爲止嘗試過什麼?](http://whathaveyoutried.com) 請[編輯]你的問題以顯示代碼 的[mcve]你有問題,然後我們可以嘗試幫助 具體問題。你還應該閱讀[問]。 –

+0

@TobySpeight問題是,moodle數據庫不清楚。例如:我有課程ID,並在mdl_resources中搜索,我找到了那個course_id的資源。但是在mdl_files中沒有使用course id,它使用context_id(對應於mdl_context),它具有與課程id不相關的instance_id。我被封鎖了。 –

回答

1

在Moodle中,文件存儲在文件系統中的變量$ CFG-> dataroot所定義的區域中,正如您可能已知的那樣。 '文件'表確切地標識了每個文件的存儲位置,原始文件名和其他屬性。它還標識文件屬於哪個組件。

當文件屬於課程時,組件(即表格字段)是「課程」。爲了完全檢索文件屬於哪個課程,必須檢索「contextid」字段的內容並進入表「context」並將其用作鍵(即行ID)。然後,「instanceid」字段就是您的課程ID。

這可以通過一個MySQL查詢完成。
例如,如果你想找到屬於當然與ID = 657的所有文件,你可以這樣寫:

SELECT * FROM moodle.mdl_files 
INNER JOIN moodle.mdl_context 
INNER JOIN moodle.mdl_course 
ON moodle.mdl_files.contextid = moodle.mdl_context.id 
AND moodle.mdl_context.instanceid= moodle.mdl_course.id 
WHERE moodle.mdl_course.id=657 AND moodle.mdl_files.component = 'course'; 

假設你的數據庫被稱爲「Moodle的」,並且所有的表都用「mdl_前綴」。

相關問題