sábado, 11 de dezembro de 2010

Listar Alunos que Ainda não Acessaram o Curso no Moodle num Determinado Período com Comando SQL

    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


3 comentários:

  1. Olá. Mais uma vez seu blog me ajuda em um relatório para a chefia. =) Valeus!

    ResponderExcluir
  2. Que bom Marcus!
    É uma satisfação saber da utilidade das postagens.

    ResponderExcluir
  3. Amigo, você já me fez economizar muitas horas de trabalho. Muito obrigado.

    ResponderExcluir