O Moodle oferece poucas opções de relatórios gerencias. Por exemplo, caso você queira saber quais são os alunos que não acessaram o ambiente do curso nos último 10 dias, você vai ter que dar vários cliques. Terá que emitir um relatório de acesso para cada alunos individualmente e checar se acessou ou não nos últimos 10 dias. Caso seu curso tiver 50 alunos imagine a quantidade de cliques para emitir um simples relatório! Se você é tutor do curso, com muita razão reclama do excesso de clique para extrair um simples relatório. Aí sobra o pipino para o programador. Mais uma vez a equipe pedagógica fica no cangote do programador cobrando uma solução.
Se você é um programador do Moodle e estiver nessa fria, não esquente. Venha aqui para o Moodle SQL que temos a solução. Você só precisa fazer junção das tabelas da matricula com a do log por exclusão. Explicando em miúdos, extrai uma lista de alunos matriculados e exclua dessa lista todos os usuários que constam na lista de log. Os usuários que não constam na lista do log, são as que não acessaram o curso.
Bem, vamos ver como isso fica no código SQL:
SELECT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? AND u.id NOT IN (SELECT DISTINCT userid FROM mdl_log WHERE course=? AND time >=? AND time <=?)
Passe o parâmetro id do curso em e.instanceid=? da consulta principal e course=? da subconsulta.
Passe o parâmetro da primeira e segunda data em time >=? AND time <=?
Não esqueça que a data no banco de dados do Moodle é convertido em quantidade de segundos. Pois, os parâmetros da data devem ser convertidos em número de quantidade de segundos.
Analisando o código SQL, parte marcada em amarelo indica a relação dos alunos que estão matriculados no curso. A parte em cinza indica o filtro dos usuários que acessaram o curso em um determinado período. A parte em vermelha exclui da lista dos alunos matriculados os que já acessaram, sobrando assim, os que ainda não acessaram no período definido.
Viu como é moleza. Agora é só rodar o código em uma linguagem de programação da sua preferência. Esse código só não funciona nas versões do Moodle inferior a 1.7. Agora boa programação. Faça um relatório bonito, assim ficará bem na fita com a equipe pedagógica. Caso ainda queira fazer uma média, monte uma rotina que envie e-mail a lista alunos dos alunos filtrado na consulta SQL.
Codificação PHP
Agora vai de brinde a implementação do código PHP desse post. Acese o link:
http://moodlephp.blogspot.com/2010/12/listar-alunos-que-ainda-nao-acessaram-o.html
Se você é um programador do Moodle e estiver nessa fria, não esquente. Venha aqui para o Moodle SQL que temos a solução. Você só precisa fazer junção das tabelas da matricula com a do log por exclusão. Explicando em miúdos, extrai uma lista de alunos matriculados e exclua dessa lista todos os usuários que constam na lista de log. Os usuários que não constam na lista do log, são as que não acessaram o curso.
Bem, vamos ver como isso fica no código SQL:
SELECT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? AND u.id NOT IN (SELECT DISTINCT userid FROM mdl_log WHERE course=? AND time >=? AND time <=?)
Passe o parâmetro id do curso em e.instanceid=? da consulta principal e course=? da subconsulta.
Passe o parâmetro da primeira e segunda data em time >=? AND time <=?
Não esqueça que a data no banco de dados do Moodle é convertido em quantidade de segundos. Pois, os parâmetros da data devem ser convertidos em número de quantidade de segundos.
Analisando o código SQL, parte marcada em amarelo indica a relação dos alunos que estão matriculados no curso. A parte em cinza indica o filtro dos usuários que acessaram o curso em um determinado período. A parte em vermelha exclui da lista dos alunos matriculados os que já acessaram, sobrando assim, os que ainda não acessaram no período definido.
Viu como é moleza. Agora é só rodar o código em uma linguagem de programação da sua preferência. Esse código só não funciona nas versões do Moodle inferior a 1.7. Agora boa programação. Faça um relatório bonito, assim ficará bem na fita com a equipe pedagógica. Caso ainda queira fazer uma média, monte uma rotina que envie e-mail a lista alunos dos alunos filtrado na consulta SQL.
Codificação PHP
Agora vai de brinde a implementação do código PHP desse post. Acese o link:
http://moodlephp.blogspot.com/2010/12/listar-alunos-que-ainda-nao-acessaram-o.html
Olá. Mais uma vez seu blog me ajuda em um relatório para a chefia. =) Valeus!
ResponderExcluirQue bom Marcus!
ResponderExcluirÉ uma satisfação saber da utilidade das postagens.
Amigo, você já me fez economizar muitas horas de trabalho. Muito obrigado.
ResponderExcluir