特定课程的首次访问日期或注册日期

问题描述 投票:0回答:2

我真的很感激任何有关这种困境的帮助!

我需要一份报告,列出用户注册特定课程(或第一次访问)的确切日期。即如果用户在两个不同日期在网站上注册了两门课程,我需要用户开始每门课程的确切日期。 (登记或访问)

我相信特定课程的角色分配日期应该可以解决问题,但如何为课程的所有用户获取“角色分配”日期?

我尝试设置如下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 -
moodle moodle-api
2个回答
0
投票

您无法在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)

首次访问实际上没有意义,因为注册时间将始终是两者之间的最早日期。即使用户使用自我注册。访客课程访问可能是唯一的例外,但它不需要用户ID,因此无论如何它都会使您的报告不一致。因此,99%的时间您需要准确检查用户注册,并且最早的日期始终是注册时间。

如果您的moodle版本小于3,您可以通过prefix_log首次访问


0
投票

您可以通过查询事件“\ core \ event \ course Viewed”eventname的mdl_logstore_standard_log来检索对课程的第一次访问。

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

timecreated是您正在寻找的特定字段

如果用户未注册课程并且他们查看注册页面(针对该课程),则不会触发课程查看事件。所以你不应该得到任何误报。

© www.soinside.com 2019 - 2024. All rights reserved.