Boa noite galera.
Estou precisando fazer um relatório com alguns dados. Na tabela mdl_log é registrado todas as ações do usuário. Gostaria de pegar todos os usuários que estão na atividade Quiz, e cometeram a ação "continue attempt" no mesmo dia e com IPs diferentes.
Te acontecido aqui, que alguns usuários iniciam a prova nos laboratórios, em salvam a prova sem enviar. Fecham o moodle e falam que terminaram a prova. Pegam o notebook e continuam a prova do lado de fora do lab, com consulta.
Para evitar isso preciso deste relatório.
Não consigo fazer a Query para pesquisar de uma só vez. Para estou tentando fugir da solução de tratar os dados no PHP, para criar agilidade no relatório.
Se alguém tiver alguma ideia. Ajuda ai.
Valeu
Oi, André
Acredito que primeiro você tem que pegar todos os alunos que começaram o quiz e seus respectivos IPs e depois fazer uma nova passada na tabela de logs procurando pelo mesmo usuário, no mesmo dia, com ip diferente
SELECT userid
FROM
(SELECT userid,ip, DAYOFMONTH(FROM_UNIXTIME(time)) as dia
FROM log
WHERE DAYOFMONTH(FROM_UNIXTIME(time)) == 'DIA DO MÊS DESEJADO'
AND action = 'login') as t1
JOIN logs
ON (t1.userid = logs.userid )
WHERE t1.dia = DAYOFMONTH(FROM_UNIXTIME(time))
AND t1.ip != logs.ip
Não é necessariamente uma consulta, são duas aninhadas, mas talvez resolva...
Acredito que primeiro você tem que pegar todos os alunos que começaram o quiz e seus respectivos IPs e depois fazer uma nova passada na tabela de logs procurando pelo mesmo usuário, no mesmo dia, com ip diferente
SELECT userid
FROM
(SELECT userid,ip, DAYOFMONTH(FROM_UNIXTIME(time)) as dia
FROM log
WHERE DAYOFMONTH(FROM_UNIXTIME(time)) == 'DIA DO MÊS DESEJADO'
AND action = 'login') as t1
JOIN logs
ON (t1.userid = logs.userid )
WHERE t1.dia = DAYOFMONTH(FROM_UNIXTIME(time))
AND t1.ip != logs.ip
Não é necessariamente uma consulta, são duas aninhadas, mas talvez resolva...
Olá André,
Não sei se é aplicável ao seu caso o que estou falando.
Mas se você estiver hospedando seu moodle em um servidor externo a sua rede, o moodle vai armazenar no log o IP REAL (válido na internet, IP "externo" do roteador), quer dizer não vai diferenciar os IPs de sua rede interna, vai colocar o mesmo IP para todos que estão dentro dela.
Mas por data e usuário, dá para fazer tranquilo.
Abraço,
Espero ter ajudado.
Não sei se é aplicável ao seu caso o que estou falando.
Mas se você estiver hospedando seu moodle em um servidor externo a sua rede, o moodle vai armazenar no log o IP REAL (válido na internet, IP "externo" do roteador), quer dizer não vai diferenciar os IPs de sua rede interna, vai colocar o mesmo IP para todos que estão dentro dela.
Mas por data e usuário, dá para fazer tranquilo.
Abraço,
Espero ter ajudado.
Resolvi fazendo duas buscas tabela mdl_log pegando os registro da data determinada pelo usuário com a action 'continue attemp' e module 'quiz'
Depois tratei os dados com o PHP comparando as duas buscas.
É um relatório interessante para instituições, pois está sendo muito utilizada por alunos espertos.
Valeu pela ajuda.
Depois tratei os dados com o PHP comparando as duas buscas.
É um relatório interessante para instituições, pois está sendo muito utilizada por alunos espertos.
Valeu pela ajuda.