Завершение ресурсов/файлов Moodle

Мне нужна помощь, чтобы понять, ГДЕ хранится состояние завершения ресурса (файла) в Moodle.

Пожалуйста, смотрите прикрепленные изображения для получения дополнительной информации.

  1. Флаг рядом с файлом помечается как завершенный после просмотра пользователем Просмотр ресурса/файла
  2. Это настраивается в настройках завершения этого файла/ресурса.

Завершение настройки

Мне нужно создать отчет SQL, показывающий файл и состояние завершения.

У меня уже есть «сложная часть» запроса, мне просто нужно выбрать состояние завершения из «таблицы-X» и ва-ля!

Спасибо.


person Louwrens Potgieter    schedule 11.02.2016    source источник


Ответы (2)


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

Состояние завершения и просмотренные константы находятся в /lib/completionlib.php

eg:

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
person Russell England    schedule 12.02.2016

Итак, я нашел таблицу и столбец.

Таблица: mdl_course_modules_completion

Столбец: Просмотрено

Я опубликую свой код отчета ниже, надеюсь, это поможет следующему парню.

Обратите внимание: я присоединил все типы модулей к запросу и отфильтровал только по типу викторины, урока и ресурса в операторе where. Я сделал это, потому что меня интересуют только эти 3 типа. Однако я не стал удалять объединения, поскольку код может понадобиться кому-то другому.

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
person Louwrens Potgieter    schedule 12.02.2016