Para extrair o primeiro acesso do aluno em um curso do Moodle com comando SQL, basta fazer uma consulta na tabela mdl_log, usando a função MIN do SQL.
A tabela mdl_log registra todos os cliques que o usuário efetuar no ambiente do Moodle. Para extrair a data do primeiro acesso de um curso, basta efetuar a consulta executando o seguinte comando:
Primeiro acesso de usuário (aluno, tutor etc.) no curso
SELECT MIN(time) FROM mdl_log WHERE userid=? AND course=?
A tabela mdl_log registra todos os cliques que o usuário efetuar no ambiente do Moodle. Para extrair a data do primeiro acesso de um curso, basta efetuar a consulta executando o seguinte comando:
Primeiro acesso de usuário (aluno, tutor etc.) no curso
SELECT MIN(time) FROM mdl_log WHERE userid=? AND course=?
Passe o parâmetro id do usuário em userid=? e id do curso em course=?
Caso queira extrair uma lista de todos os alunos com a data do primeiro acesso de um determinado curso, execute o seguinte comando SQL:
Primeiro acesso de todos os alunos de um determinado curso
SELECT u.id, u.firstname,u.lastname,MIN(l.time) 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 INNER JOIN mdl_log l ON l.userid=u.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? AND l.course=? GROUP BY u.id, u.firstname,u.lastname
Passe o parâmetro id do curso em e.instanceid=? e l.course=?
A data do primeiro acesso é recuperada na coluna time da tabela mdl_log. Vem em quantidade de segundos. É necessário fazer conversão para entender. Bem, neste caso é hora de usar uma linguagem de programação da sua preferencia para converter.
Veja Também
Extrair o Primeiro Acesso de um Participante no Curso do Moodle com Programação PHP
Caso queira extrair uma lista de todos os alunos com a data do primeiro acesso de um determinado curso, execute o seguinte comando SQL:
Primeiro acesso de todos os alunos de um determinado curso
SELECT u.id, u.firstname,u.lastname,MIN(l.time) 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 INNER JOIN mdl_log l ON l.userid=u.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=? AND l.course=? GROUP BY u.id, u.firstname,u.lastname
Passe o parâmetro id do curso em e.instanceid=? e l.course=?
A data do primeiro acesso é recuperada na coluna time da tabela mdl_log. Vem em quantidade de segundos. É necessário fazer conversão para entender. Bem, neste caso é hora de usar uma linguagem de programação da sua preferencia para converter.
Veja Também
Extrair o Primeiro Acesso de um Participante no Curso do Moodle com Programação PHP
Olá, estava lendo algumas das suas postagens hoje e queria saber se vc sabe como fazer essa conversao de data, converter de segundos para data.
ResponderExcluirMarcela,
ResponderExcluirUse a seguinte função de data do PHP:
date("d/m/Y",$dataemsegundos)
Dê uma olhada nesse post:
http://moodlephp.blogspot.com/2010/11/relatorio-do-periodo-da-validade-da.html
olá
ResponderExcluircomo fazer pra listar somente os cursos do usuario logado?
em uma pagina separada ?
Dê uma olhada nesse post http://moodlesql.blogspot.com/2011/12/listar-cursos-que-o-aluno-esta-inscrito.html
ResponderExcluirA conversão da data pode ser feita tambem pelo proprio MySQL.
ResponderExcluirAcrescente esse comando e corra para o abraço
SELECT from_unixtime(MIN(l.time),'%d/%m/%Y %H:%i:%s') as dataHora FROM mdl_log WHERE userid=? AND course=?
Facil facil
De: William DS www.praweb.cm.br/forum
como pergar o último Resultset no moodle ? Sei que a função get_recordset_sql() pega os dados da tabela SQL do moodle, mas, por exemplo, se eu tenho mais de 5 linhas no meu banco de dados e eu quero pegar a ultima linha, normalmente eu usaria o .last() se fosse num Resultset normal...
ResponderExcluirDaniel,
ExcluirPara retornar o último registro da base de dados há duas formas.
Primeira Alternativa
Carregar todos os registros em um array e depois extrair o último elemento do array. Esse caminho é menos indicado.
Segunda Alternativa
Faça uma consulta SQL parar extrair o último registro. Localize o último id gerado na por meio do comando MAX. Vejo o exemplo: SELECT MAX(id ) FROM tabelaxx
Na posse do id do último registro, faça uma consulta para extrair a linha da tabela através do comando WHERE. Exemplo: SELECT * FROM tabelax WHERE id=?
Badiu como saber a quantidade de horas ? que a pessoa ficou a partir do mdl_log ?
ResponderExcluirRafael,
ExcluirO tempo de acesso é uma informação que está no log do Moodle, porém precisa ser computada. Veja nesse post http://gmoodle.blogspot.com.br/2013/02/indicadores-de-monitoramento-de-acesso.html. Há uma parte que fala da metodologia de cálculo do tempo de acesso. Isso requer programação. Só comando SQL não resolve.
Boa tarde Badiu!!
ResponderExcluirQuero saber como eu posso pegar aquelas informações de acesso do aluno que ficam na URL /user/view.php?id=225&course=36.
Estou criando um sistemas que mostra ás informações do aluno tipo disciplina, tutor , acesso e atividades.
A questão é a hora do primeiro e ultimo acesso, estou buscando essa informação no mdl_log, porem esta vido defasada , sei da diferença de horário do servidor , mas na URL do perfil do aluno mostra exatamente a hora de entrada e saída.
ex:
select MAX(data_acesso) as firstaccess from buscaacessosalunosead where lower(trim(username)) = lower($matricula) AND data_acesso <> '' limit 1
Você pode me ajudar?
Obs:
Excluira atabela
( buscaacessosalunosead ) é um VIEWS criada com base na tabela mdl_log do moodle
segue a consulta que faço na MDL_LOG
SELECT to_char(from_unixtime(MAX(time)),'DD-MM-YYYY HH:MM') as firstaccessd FROM mdl_log WHERE userid=$usa_id AND course = $curso_id "
Abraços!!
Marcos tudo beleza?
ExcluirPara tirar a hora do primeiro e último acesso, extraia informação do campo time da tabela mdl_log e depois, tire informação da hora com conversor/formatação de data.
Segue comando SQL para tirar data primeiro/último acesso.
1- Primeiro acesso do usuário no Moodle
SELECT MIN(time) FROM mdl_log WHERE userid=?
2- Primeiro acesso do usuário no curso
SELECT MIN(time) FROM mdl_log WHERE userid=? AND course=?
3- Último acesso do usuário no Moodle
SELECT MAX(time) FROM mdl_log WHERE userid=?
4- Último acesso do usuário no curso
SELECT MAX(time) FROM mdl_log WHERE userid=? AND course=?
Obrigado meu nobre!!!! sucesso para vc ..Deus abençoei
ExcluirBom dia Badiu!!
ResponderExcluirespero que esteja tudo bem.
Surgiu uma outra questão com relação a busca de acessos de usuários.
Teria como pegar os acessos de alunos sem ser por meio da mdl_log?
tem alunos muito antigos que retornam a faculdade querendo o abono das mensalidades por não ter cursado, temos o registro desse aluno no moodle mas não no mdl_log por causa de espaço apagamos.
teria como fazer uma busca nas tabelas e extrair esse acesso?
Desde já agradeço !!!
Marcos,
ExcluirÉ possível sim rastrear registro de participação de alunos sem ser pela tabela de log. Neste caso, faça rastreamento nas tabelas de nota, atividades como fórum,questionário etc.
Dê uma olhada nesse post http://moodlesql.blogspot.com.br/2010/10/apagar-nota-atividades-e-log-do-aluno.html que indica as tabelas em que devem ser removidas registros dos alunos. No seu caso, como precisa recuperar, use comando SELECT ao invés de DELETE
Obrigado meu caro!!
ExcluirSucesso sempre...°/