quinta-feira, 22 de dezembro de 2011

Recuperar id do Último Usuário Logado no Moodle


    Para recuperar o id do último usuário que fez login no Moodle, basta fazer uma consulta SQL na tabela de log com o seguinte comando:

SELECT userid FROM mdl_log WHERE action='login' ORDER BY id DESC LIMIT 0,1

Segue a explicação de cada trecho do código:
  • SELECT userid
    Retorna id do usuário no campo userid.
  • FROM mdl_log
    Faz filtro na tabela de log do Moodle.
  •  WHERE action='login'
    Filtra  os registros do log cuja ação for login. Cada vez que um usuário entrar no Moodle, preenchendo o formulário de login e senha, o sistema faz lançamento de um registro  na  tabela de log com a ação login, ou seja, grava o termo login no campo action.
  • ORDER BY id DESC
    Ordena os registro pela ordem decrescente, ou seja, do último para o primeiro.
  • LIMIT 0,1
    Filtra apenas o primeiro registro, isto é, o último usuário que logou no Moodle. Se a sua base de dados for PostgreSQL, substitua esse comando para  LIMIT 1 OFFSET 0. Esse comando pode variar em função do sistema de bando de dados.

    Caso queira saber o nome e o e-mail do usuário que logou por  último, execute o seguinte comando SQL:

SELECT u.id,u.firstname,u.lastname, u.email FROM mdl_log l INNER JOIN mdl_user u ON u.id=l.userid WHERE l.action='login' ORDER BY l.id DESC LIMIT 0,1
   
Esse comando é o mesmo que o anterior. A única diferença que é faz junção com a tabelade usuário para extrair nome e-mail do usuário. 


Os comandos SQL foram testados na base de dado MySQL. Se estiver usando um outro banco de dados, o comando de paginação pode não funcionar. Neste caso, será necessário substituir comando LIMIT pelo comando correspondente do sistema do banco de dados em uso.

2 comentários:

  1. Mto obrigado! seu blog ta muito bom!

    ResponderExcluir
  2. Olá, preciso de ajuda, dentro do moodle quando o aluno está logado criei um botão para ele visualizar as suas mensalidades e para visualizá-las basta eu enviar o e-mail desse aluno como parâmetro na minha url, estou passando esse campo $USER->email mas não está funcionando http://meusite.com.br/central.php?lf=$USER->email

    ResponderExcluir