sexta-feira, 12 de novembro de 2010

Listar Usuários Online do Moodle com Comando SQL

Para listar os usuários online do Moodle extraindo os dados diretamente do banco de dados, será necessário escrever comando SQL que faz consulta nas seguintes tabelas:


  •  mdl_user – Tabela de usuário
  • mdl_log - Tabela de log

Segue o comando SQL:

SELECT DISTINCT u.id, u.firstname, u.lastname FROM mdl_user u INNER JOIN mdl_log l ON u.id = l.userid WHERE time >=?


Passe o parâmetro de data em time >= ? .


O parâmetro da datadelimita o período para listar os alunos que estão online. Se for os últimos 5 minutos, subtrair 5 minutos da data atual.


Não esqueça converter a data para formato numérico de (número longo). Todos os campos das tabelas da base de dados do Moodle usam campo Long (número longo) para gravar a dada. Por isso é necessário converter a data em segundos.


Como a data no banco do Moodle não é legível ao olho nú, é melhor rodar esse código numa linguagem de programação.


Veja Também:
Listar Usuários Online do Moodle com Programação PHP

2 comentários:

  1. Bem legal a dica, muito obrigado!
    Fiz uma modificação, preferi usar a função unix_timestamp() do MySQL, abaixo um exemplo usando 5 minutos:

    SELECT DISTINCT u.id, u.firstname, u.lastname FROM mdl_user u INNER JOIN mdl_log l ON u.id = l.userid WHERE time >= UNIX_TIMESTAMP()-(5*60)

    ResponderExcluir
    Respostas
    1. Valeu Leonardo,
      Esse comando é bem prático. O UNIX_TIMESTAMP() só funciona com a base MySQL e não no PostgreSQL.

      Excluir