Дата первого доступа или дата зачисления для определенного курса - PullRequest
0 голосов
/ 02 сентября 2018

Я был бы очень признателен за любую помощь с этой дилеммой!

Мне нужен отчет, в котором просто указана точная дата, когда пользователь записался на определенный курс (или Первый доступ). То есть, если пользователь зарегистрирован на двух курсах на сайте в две разные даты, мне нужна точная дата, когда пользователь начал каждый курс. (зарегистрирован или доступ)

Я считаю, что дата назначения роли для конкретного курса должна помочь, но как мне получить дату «назначения роли» для всех пользователей курса?

Я попытался настроить SQL-запрос, как показано ниже. Он дает мне список пользователей, курсы, в которые они записаны и т. Д.

Тем не менее, он дает мне одинаковую дату создания / доступа ко всем курсам - дату уровня сайта. Как получить дату начала курса или дату назначения роли?

Я был бы очень признателен за любую помощь. Я действительно в своем уме!

user2.firstname AS Firstname,
user2.lastname AS Lastname,
user2.email AS Email,
user2.city AS City,

DATE_FORMAT(FROM_UNIXTIME(user2.firstaccess), '%Y-%m-%d %H:%i') AS 'Firstaccess',
DATE_FORMAT(FROM_UNIXTIME(user2.timecreated), '%Y-%m-%d %H:%i') AS 'Timecreated',
course.fullname AS Course
,(SELECT shortname FROM prefix_role WHERE id=en.roleid) AS ROLE
,(SELECT name FROM prefix_role WHERE id=en.roleid) AS RoleName
FROM prefix_course AS course 
JOIN prefix_enrol AS en ON en.courseid = course.id
JOIN prefix_user_enrolments AS ue ON ue.enrolid = en.id
JOIN prefix_user AS user2 ON ue.userid = user2.id
  • Moodle версия 3.5 -

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы можете получить первый доступ к курсу, запросив mdl_logstore_standard_log для события "\ core \ event \ course visible" имя события.

SELECT * FROM mdl_logstore_standard_log
WHERE eventname LIKE "%course_viewed%"
AND userid=##

timecreated - это конкретное поле, которое вы ищете

Если пользователь не зарегистрирован в курсе и просматривает страницу регистрации (для этого курса), просматриваемое событие не запускается. Так что вы не должны получать никаких ложных срабатываний.

0 голосов
/ 03 сентября 2018

Вы не можете получить доступ к первому курсу в Moodle 3+. Это действие больше не регистрируется, вы можете получить только последний доступ.

Что касается времени регистрации (TimeCreated), попробуйте это:

SELECT u.username, u.lastname, u.firstname, c.fullname, DATE_FORMAT(FROM_UNIXTIME(ue.timecreated), '%Y-%m-%d %H:%i') AS 'Timecreated' FROM prefix_user_enrolments ue LEFT JOIN prefix_enrol e ON (ue.enrolid = e.id) LEFT JOIN prefix_course c ON (e.courseid = c.id) LEFT JOIN prefix_user u ON (ue.userid = u.id)

Первый доступ на самом деле не имеет смысла, так как время регистрации всегда будет самой ранней датой между двумя. Даже если пользователь использует самостоятельную регистрацию. Гостевой доступ к курсу, вероятно, является единственным исключением, но он не требует идентификатора пользователя, поэтому он все равно сделает ваш отчет непоследовательным. Таким образом, в 99% случаев вам нужно точно проверять регистрацию пользователей, и самая ранняя дата - это всегда время регистрации.

Если ваша версия Moodle меньше 3, вы можете получить первый доступ через prefix_log

...