2016-02-11 84 views
0

我需要幫助理解在哪裏存儲Moodle中資源(文件)的完成狀態。Moodle資源/文件完成

有關更多信息,請參閱附加圖像。

  1. 旁邊的文件標誌爲已完成,一旦用戶觀看 View of resource/file
  2. 這是在這個文件/資源​​的完成設置的設定標記。

Completion setup

我需要生成顯示文件和完成狀態的SQL報告。

我已經有了查詢的「困難部分」,我只需要從「table-X」和wha-la中選擇完成狀態!

謝謝。

回答

1
SELECT r.id, r.name, r.course, cmc.userid, cmc.completionstate, cmc.viewed 
FROM mdl_course_modules_completion cmc 
JOIN mdl_course_modules cm ON cm.id = cmc.coursemoduleid 
JOIN mdl_modules m ON m.id = cm.module AND m.name = 'resource' 
JOIN mdl_resource r ON r.id = cm.instance 

的completionstate和觀看常數是/lib/completionlib.php

如:

COMPLETION_INCOMPLETE = 0 
COMPLETION_COMPLETE = 1 
COMPLETION_COMPLETE_PASS = 2 
COMPLETION_COMPLETE_FAIL = 3 
COMPLETION_COMPLETE_RPL = 4 // This is used in Totara. 

COMPLETION_NOT_VIEWED = 0 
COMPLETION_VIEWED = 1 
+0

謝謝您的回答! –

1

好吧,所以我找到了表格和欄目。

表:mdl_course_modules_completion

柱:

我會後我下面的報告的代碼,希望這可以幫助未來的傢伙。

注意:我將所有模塊類型都加入到查詢中,並僅對where語句中的類型測驗,課程和資源進行過濾。我這樣做是因爲我只對這三種類型感興趣。然而,我並沒有刪除這些連接,因爲別人可能需要這些代碼。

SELECT DISTINCT 
u.firstname AS 'Firstname' 
    ,u.lastname AS 'Lastname' 
    ,u.institution AS 'Institution' 
    ,u.department AS 'Department' 
    ,u.city AS 'City/Site' 
    ,cc.name AS 'Course' 
    ,c.fullname AS 'Module' 
,CASE 
    WHEN mf.name IS NOT NULL THEN mf.name 
    WHEN mb.name IS NOT NULL THEN mb.name 
    WHEN mr.name IS NOT NULL THEN mr.name 
    WHEN mu.name IS NOT NULL THEN mu.name 
    WHEN mq.name IS NOT NULL THEN mq.name 
    WHEN mp.name IS NOT NULL THEN mp.name 
    WHEN ml.name IS NOT NULL THEN ml.name 
    ELSE NULL 
END AS activityname 
,CASE WHEN mdl.name = 'lesson' THEN CASE WHEN mlg.id IS NOT NULL AND mlg.completed IS NOT NULL THEN 'Complete' ELSE 'Incomplete' END 
     WHEN mdl.name = 'quiz' THEN CASE WHEN mqg.id IS NOT NULL AND mqg.timemodified IS NOT NULL THEN 'Complete' ELSE 'Incomplete' END 
     WHEN mdl.name = 'resource' THEN CASE WHEN cmc.viewed = 1 THEN 'Complete' ELSE 'Incomplete' END 
END AS Status 
FROM 
    mdl_user u 
    JOIN mdl_user_enrolments ue ON ue.userid = u.id 
    JOIN mdl_enrol E on E.id = ue.enrolid 
    JOIN mdl_course c ON c.id = E.courseid 
    JOIN mdl_course_categories cc ON c.category = cc.id 
    JOIN mdl_course_modules cm ON cm.course = c.id 
    JOIN mdl_course_modules_completion cmc ON cmc.coursemoduleid = cm.id 
    JOIN mdl_context AS ctx ON ctx.contextlevel = 70 AND ctx.instanceid = cm.id 
    JOIN mdl_modules AS mdl ON cm.module = mdl.id 
    LEFT JOIN mdl_forum AS mf ON mdl.name = 'forum' AND cm.instance = mf.id 
    LEFT JOIN mdl_book AS mb ON mdl.name = 'book' AND cm.instance = mb.id 
    LEFT JOIN mdl_resource AS mr ON mdl.name = 'resource' AND cm.instance = mr.id 
    LEFT JOIN mdl_url AS mu ON mdl.name = 'url' AND cm.instance = mu.id 
    LEFT JOIN mdl_quiz AS mq ON mdl.name = 'quiz' AND cm.instance = mq.id 
    LEFT JOIN mdl_quiz_grades mqg ON mqg.quiz = mq.id 
    LEFT JOIN mdl_page AS mp ON mdl.name = 'page' AND cm.instance = mp.id 
    LEFT JOIN mdl_lesson AS ml ON mdl.name = 'lesson' AND cm.instance = ml.id 
    LEFT JOIN mdl_lesson_grades mlg ON mlg.lessonid = ml.id 
    LEFT JOIN mdl_files AS f ON f.contextid = ctx.id 
    LEFT JOIN mdl_files_reference fr ON fr.id = f.referencefileid 
WHERE mdl.name in ('quiz','lesson','resource') 
ORDER BY firstname,Lastname,cc.name,c.fullname