Listar usuários online no Moodle (SQL)

Listar usuários online no Moodle (SQL)

por Thiago Soares -
Número de respostas: 2

Olá Lino.

 

Vi o seu tutorial no endereço abaixo.

http://moodlephp.blogspot.com/2010/11/listar-usuarios-online-do-moodle-com.html

 

Ao executar a função: 

 
$data = time() - (5*60);
$sql = "SELECT DISTINCT u.id, u.firstname, u.lastname FROM mdl_user u INNER JOIN mdl_log l ON u.id = l.userid WHEREtime>=$data" ;
$users = $DB->get_records_sql($sql);
 
$cont=0;
foreach ($users as $user){
echo $user->id;
echo " ";
echo $user->firstname ." ".$user->lastname."<br>";
$cont++;
}
 
echo $cont." usuario online";
 
Não retorna nenhum usuário online, sendo que existe.
 
 
Existe alguma configuração para ser feita no Moodle ou seria só isso a consulta mesmo?
 
 
Criei a pasta _extra na raiz do Moodle conforme o link acima.
 
 
Grato, Lino.
Em resposta à Thiago Soares

Re: Listar usuários online no Moodle (SQL)

por Lino Vaz Moniz -

Thiago,

O comando SQL que está sendo executado funciona até a versão 2.7 do Moodle. A partir dessa versão, o registro de log  passou a ser registrado na tabela mdl_logstore_standard_log e não mais mdl_log. A coluna da data passou a ser timecreated e não mais time.

Sendo assim, para listar os alunos online a partir da versão 2.7, execute o seguinte comando SQL:

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

 

Passe o valor de  da hora em formato timestamp em l.timecreated > ?

Atualize o SQL do seu código que vai funcionar.