Este post apresenta a codificação PHP para extrair a data do primeiro acesso de um participante no curso do Moodle. Será apresentado código tanto para versão 1.9 quanto para versão 2.0 do Moodle.
Para explorar um pouco mais o comando SQL que efetiva a consulta do primeiro acesso no banco de dados, consulte o link: http://moodlesql.blogspot.com/2011/04/extrair-o-primeiro-acesso-do-aluno-no.html
A código apresentado a seguir, faz uma consulta da data do primeiro acesso no banco de dados e imprime na tela.
Então vamos iniciar a programação. Siga os passos a seguir.
1° Passo
Importe a biblioteca de funções do Moodle:
require_once("../config.php");
2° Passo
Receba os parâmetro do id do usuário e id do curso passados pelo método GET:
$user=$_GET['user'];
$course=$_GET['course'];
Faça crítica de dados caso os parâmetros não forem passados:
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
3° Passo
Faça a consulta no banco de dados:
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
Se estiver usando Moodle 2.0 , use esse código:
$access=$DB->get_record_sql($sql);
Para Moodle 1.9 e demais, use esse código:
$access=get_record_sql($sql);
Já deu para notar que a diferença da versão 1.9 para 2.0 é que as funções de acesso ao banco de dados são invocadas no objeto $DB na versão 2.0. Veja a diferença dos dois códigos destacado pela cor vermelha.
$access=get_record_sql($sql);
$access=$DB->get_record_sql($sql);
4° Passo
Imprima a data na tela:
Verifique se o usuário nunca acessou o curso:
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
Caso tenha acessado, informe a data:
echo date("d/m/Y H:i",$access->firstaccess);
Código Completo
<?
require_once("../config.php");
//receber parârmetro
$user=$_GET['user'];
$course=$_GET['course'];
//crítica de dados
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
//extrair primeiro acesso
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
//para Moodle 2.0
$access=$DB->get_record_sql($sql);
//para Moodle 1.9
// $access=get_record_sql($sql);
//mensagem caso ainda não tenha acesado
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
//imprimir data
echo date("d/m/Y H:i",$access->firstaccess);
?>
require_once("../config.php");
//receber parârmetro
$user=$_GET['user'];
$course=$_GET['course'];
//crítica de dados
if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}
if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}
//extrair primeiro acesso
$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";
//para Moodle 2.0
$access=$DB->get_record_sql($sql);
//para Moodle 1.9
// $access=get_record_sql($sql);
//mensagem caso ainda não tenha acesado
if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}
//imprimir data
echo date("d/m/Y H:i",$access->firstaccess);
?>
Implementar no Moodle
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado user_first_access_course.php dentro dessa pasta. Digite o código php nesse arquivo.
Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/user_first_access_course.php?user=2&course=1
Substitua os parâmetro pelo id do curso e id do usuário pelos dados da sua pesquisa
Download
Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso essa pasta não exista, crie-a. Agora faça o teste.
Esse código foi testado na versão 2.0 e 1.9.11. Pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Lembrando que nas versões inferiores a 2.0, as funções do acesso ao banco de dados não são invocados por meio de um objeto.
vc saberia me dizer como pegar a ID do usuario q fez o login? ou pegar a id do ultimo usuario logado?
ResponderExcluirTecNol,
ResponderExcluirPara ver como extrair id do último usuário que logou no Moodle acesse o post http://moodlesql.blogspot.com/2011/12/recuperar-id-do-ultimo-usuario-logado.html
Caso queira recuperar id da session PHP do usuário logado, na variável global $USER->id
Bom dia meu coro Badiu!!
ResponderExcluirVocê poderia me ajudar?
Estão tentando buscar o primeiro acesso do aluno em cada disciplina já tentei de tudo.. ex:
SELECT to_char(from_unixtime(MIN(time)),'DD-MM-YYYY HH:MM') as firstaccessd FROM mdl_log WHERE userid=? AND course=?
Só me retorna o primeiro acesso dele!!!
desde já agradeço!!
Marcos,
ExcluirPara extrair o primeiro acesso de um usuário nos cursos que já fez acesso, execute o seguinte comando SQL:
SELECT MIN(time),course FROM mdl_log WHERE userid=6 GROUP BY course
Obrigado meu caro!!!
ResponderExcluir