Para contar o tempo passado por um usuário em um curso, dispomos do plugin Dedicação ao curso, que tem um custo anual associado.
Por outro lado, podemos extrair o tempo que um usuário passou em um curso sem a necessidade de plugins, utilizando consultas diretas sobre o banco de dados do Open LMS, embora seja importante ter em mente que esse valor não é exato, pois, entre outras coisas, não contaria o tempo que o aluno passa, por exemplo, assistindo a um vídeo incorporado ou lendo informações em um link externo.
A consulta seria:
SELECT T.userid, CONCAT(u.firstname, ' ', u.lastname) AS fullname, FROM_UNIXTIME(MIN(T.timecreated)) AS initial, FROM_UNIXTIME(MAX(T.timecreated)) AS end, SUBSTRING(Sec_to_time(MAX(T.sumtime)), 1, 8) AS total FROM ( SELECT l.id, l.timecreated, l.userid, DATE_FORMAT(FROM_UNIXTIME(l.timecreated), '%d-%m-%Y') AS dTime, @prevtime := (SELECT timecreated FROM mdl_logstore_standard_log l2 WHERE l.userid = l2.userid AND l.courseid = l2.courseid AND l2.id < l.id ORDER BY l2.id DESC LIMIT 1) AS prev_time, IF (l.userid != @lastuser, @delta := 0, @lastuser) AS useract, l.timecreated - @prevtime AS diff, IF (l.timecreated - @prevtime < 7200, @delta := @delta + (l.timecreated - @prevtime ), @delta) AS sumtime, IF (l.userid != @lastuser, @lastuser := l.userid, @lastuser) AS useractual FROM mdl_logstore_standard_log AS l, (SELECT @delta := 0) AS s_init, (SELECT @lastuser := 0) AS s_lastuser WHERE 0 = 0 AND l.courseid = 2 ORDER BY l.userid ASC, l.id ASC ) T JOIN mdl_user u ON T.userid = u.id GROUP BY T.userid ORDER BY MAX(T.sumtime) DESC
Cuidando de colocar o ID do curso substituindo o "2" no ponto destacado em negrito, perto do final.
Neste artigo, explicamos como usar o administrador de SQL para realizar consultas no Open LMS.
Comentários
0 comentários
iniciar sessão para comentar.