segunda-feira, 29 de novembro de 2010

Relatório do Período da Validade da Inscrição dos Participantes no Curso do Moodle com Programação PHP

    Este post apresenta a codificação PHP para extrair um relatório sobre o período da validade de inscrição dos participantes de um determinado curso no Moodle. O código PHP usa as bibliotecas de funções do ambiente do Moodle.

   Para entender as regras de funcionamento sobre o tempo de validade de inscrição no ambiente Moodle leia o seguinte post: http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html

Esse relatório informa a data de expiração da matrícula de cada participante  inscrito no curso.
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 o parâmetro do curso passado pelo método GET:

$curso=$_GET['curso'];
if(empty($curso)){echo "Id do curso  é um parâmetro obrigatório";exit;}

Passe o parâmetro com id do curso que pretenda extrair o relatório. Caso queira saber como encontrar id do curso consulte o post: http://moodlesql.blogspot.com/2010/10/extrair-id-do-usuario-e-do-curso-no.html

3° Passo
Fazer consulta no banco de dados:

$sql="SELECT u.firstname,u.lastname,rs.timestart,rs.timeend FROM  {$CFG->prefix}role_assignments rs INNER JOIN  {$CFG->prefix}user u ON u.id=rs.userid INNER JOIN  {$CFG->prefix}context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND e.instanceid=$curso";

$users=get_records_sql($sql);

Essa consulta extrai a informações do banco de dados sobre a data inicial e final da validade da inscrição de cada participante.

4° Passo

Imprimir relatório:

      <table  border="1">
<tr>
<td><b>Participante</b></td>
<td><b>Data de Inicio</b></td>
<td><b>Data de Finaliza&ccedil;&atilde;o</b></td>
</tr>
<?    foreach ($users as $user){
//formatar data
    $dataInicio=$user->timestart;
    if($dataInicio==0){$dataInicio="--";}
    else {$dataInicio=date("d/m/Y",$user->timestart);}
   
    $dataFim=$user->timeend;
    if($dataFim==0){$dataFim="--";}
    else {$dataFim=date("d/m/Y",$user->timeend);}
 ?>
    <tr>
    <td><?=$user->firstname ." ".$user->lastname?></td>
    <td><?= $dataInicio?></td>
    <td><?=$dataFim?></td>

    
<?}?>
</table>  


O relatório é organizado em uma tabela que com três colunas:
  • Participante – Nome do participante
  • Data de Inicio – Data que a inscrição foi feita
  • Data da Finalização – Data final da validade da inscrição.
    A data final da validade da inscrição é a data da inscrição mais os dias da validade da inscrição que é definido no momento do cadastro.

Código Completo
Até então vimos o código em pedaço. Juntando tudo fica assim:

<?php

require_once("../config.php");
//receber parármetro
    $curso=$_GET['curso'];
    
    if(empty($curso)){echo "Id do curso  &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}
     
      $sql="SELECT u.firstname,u.lastname,rs.timestart,rs.timeend FROM  {$CFG->prefix}role_assignments rs INNER JOIN  {$CFG->prefix}user u ON u.id=rs.userid INNER JOIN  {$CFG->prefix}context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND e.instanceid=$curso";
      $users=get_records_sql($sql);
    
      ?>
      <table  border="1">
<tr>
<td><b>Participante</b></td>
<td><b>Data de Inicio</b></td>
<td><b>Data de Finaliza&ccedil;&atilde;o</b></td>
</tr>
<?    foreach ($users as $user){
//formatar data
    $dataInicio=$user->timestart;
    if($dataInicio==0){$dataInicio="--";}
    else {$dataInicio=date("d/m/Y",$user->timestart);}
   
    $dataFim=$user->timeend;
    if($dataFim==0){$dataFim="--";}
    else {$dataFim=date("d/m/Y",$user->timeend);}
 ?>
    <tr>
    <td><?=$user->firstname ." ".$user->lastname?></td>
    <td><?= $dataInicio?></td>
    <td><?=$dataFim?></td>

    
<?}?>
</table>

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 participante_pvalidade_inscricao.php dentro da pasta _extra. Coloque o código php nesse arquivo.

Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/participante_pvalidade_inscricao.php?curso=2
Substitua o parâmetro pelo id do  curso


Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download desse exemplo. Descompacte  o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste.

Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Não funciona na versão 1.6 e 2.0.
 
Veja Também:
Desmistificando Período de Inscrição do Curso no Moodle com Comando SQL

Relatório da Configuração do Período da Validade da Inscrição no Curso do Moodle com Programação PHP

Data de inscrição do aluno no curso do Moodle

Um comentário: