Relatório geral de alunos / tutores / grupo no curso do Moodle

Relatório geral de alunos / tutores / grupo no curso do Moodle

por Lino Vaz Moniz -
Número de respostas: 2

Caso precise tirar um relatório geral no Moodle  que liste total de alunos, tutores, instituição, grupo, perfil e data do último acesso em um determinado curso via banco de dados,  basta executar o seguinte comando:

SELECT DISTINCT u.id, CONCAT(u.firstname,u.lastname) AS name,u.email,r.name AS profile,r.shortname AS profileshortname,g.name AS turma,u.institution,from_unixtime(u.lastaccess, '%d/%m/%Y %H:%i:%s') AS lastaccess FROM mdl_role_assignments rs INNER JOIN mdl_role r ON r.id=rs.roleid  INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id INNER JOIN mdl_course c ON c.id=e.instanceid INNER JOIN  mdl_groups g ON g.courseid=c.id INNER JOIN mdl_groups_members m ON g.id=m.groupid WHERE e.contextlevel=50 AND c.id=?

 

Passe o id do curso em c.id=?

Em resposta à Lino Vaz Moniz

Re: Relatório geral de alunos / tutores / grupo no curso do Moodle

por Sergio Bernardi -

Boa tarde,

Testei este script e na validação descobri que este script mostra somente a ultima data de acesso ao Moodle, e não em um curso especifico.

o campus u.lastaccess não está pegando a data de acesso ao curso, mas sim a data de acesso ao Moodle.

Consegui validar isso testando em um tutor que esta em mais de um curso. Quando resgato ele a data do ultimo acesso é a mesma em ambos os cursos em que ele faz parte.

Em resposta à Lino Vaz Moniz

Re: Relatório geral de alunos / tutores / grupo no curso do Moodle

por Sergio Bernardi -

Arrumei o código, ficou assim:

SELECT distinct g.name AS POLO, c.fullname AS DISCIPLINA , u.username,u.firstname, u.lastname,
(SELECT from_unixtime(timeaccess, '%d/%m/%Y %H:%i:%s') as ULTIMO_ACESSO
FROM ava_poliseducacional_com_br.mdl_user_lastaccess la
WHERE la.userid = u.id AND la.courseid = c.id) AS ULTIMO_ACESSO
FROM mdl_course AS c
JOIN mdl_groups AS g ON g.courseid = c.id
JOIN mdl_groups_members AS m ON g.id = m.groupid
JOIN mdl_user AS u ON m.userid = u.id
JOIN mdl_role_assignments AS rs ON rs.userid = u.id

#WHERE g.name = ' '    --> Caso queira filtrar por grupo
#AND rs.roleid = ' '    --> Caso queira filtrar por cargo ex:  4=tutor 5=estudante
#AND u.id = ''    --> Caso queira filtrar por usuario

ORDER BY POLO,DISCIPLINA