segunda-feira, 29 de novembro de 2010

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

    Este post apresenta a codificação PHP para extrair um relatório sobre a configuração do período da validade de inscrição do 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  
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

Fazer consulta no banco de dados:

$sql="SELECT id,fullname,startdate,enrolperiod FROM {$CFG->prefix}course";
$cursos=get_records_sql($sql);
$periodo="";

Essa consulta extrai a informações do banco de dados sobre a configuração do curso. A informação que mais nos interessa está na coluna enrolperiod. Esse campo traz a quantidade de dias em segundo sobre a validade de inscrição.

3° PassoImprimir relatório:
    
<table  border="1">
<tr>
<td><b>Id</b></td>
<td><b>Curso</b></td>
<td><b>Data de Inicio</b></td>
<td><b>Configura&ccedil;&atilde;o da Inscri&ccedil;&atilde;o</b></td>
</tr>
<?    foreach ($cursos as $curso){
    //formatar data
    $dataInicio=$curso->startdate;
    if($dataInicio==0){$dataInicio="--";}
    else {$dataInicio=date("d/m/Y",$curso->startdate);}
 
    if($curso->enrolperiod==0){
        $periodo="Ilimitado";
    }else{
        $periodo=$curso->enrolperiod/60/60/24;
        $periodo=$periodo." dia";
    }
 
    ?>
    <tr>
    <td><?=$curso->id?></td>
    <td><?=$curso->fullname?></td>
    <td><?= $dataInicio?></td>
    <td><?=$periodo?></td>
  
<?}?>
</table>

O relatório é organizado em uma tabela que com quatros colunas:
  • Id  - Id do curso
  • Curso – Nome do curso
  • Data inicial – Data em que o curso será iniciado
  • Configuração da Inscrição – Indica a quantidade de dias da validade da inscrição.
Para calcular a quantidade de dias é necessário converter a quantidade de segundos em dias. Por isso que foi feito o seguinte cálculo:
    $periodo=$curso->enrolperiod/60/60/24;
A primeira divisão por 60 converte para minutos. A segunda divisão por 60 converte para hora. A terceira divisão por 24 converte para dia.
 
  Essa configuração é usada no momento da inscrição do aluno ou tutor no curso para calcular a data final da validade de inscrição. 

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

<?php
require_once("../config.php");
   
      $sql="SELECT id,fullname,startdate,enrolperiod FROM {$CFG->prefix}course";
     $cursos=get_records_sql($sql);
    $periodo="";
      ?>
      <table  border="1">
<tr>
<td><b>Id</b></td>
<td><b>Curso</b></td>
<td><b>Data de Inicio</b></td>
<td><b>Configura&ccedil;&atilde;o da Inscri&ccedil;&atilde;o</b></td>
</tr>
<?    foreach ($cursos as $curso){
   //formatar data
    $dataInicio=$curso->startdate;
    if($dataInicio==0){$dataInicio="--";}
    else {$dataInicio=date("d/m/Y",$curso->startdate);}
 
    if($curso->enrolperiod==0){
        $periodo="Ilimitado";
    }else{
        $periodo=$curso->enrolperiod/60/60/24;
        $periodo=$periodo." dia";
    }
 
    ?>
    <tr>
    <td><?=$curso->id?></td>
    <td><?=$curso->fullname?></td>
    <td><?= $dataInicio?></td>
    <td><?=$periodo?></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 curso_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/curso_pvalidade_inscricao.php


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 2.0.

Veja Também:
Desmistificando Período de Inscrição do Curso no Moodle com Comando SQL

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

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

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  &eacute; um par&acirc;metro obrigat&oacute;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

sexta-feira, 19 de novembro de 2010

Recuperar Senha de Administrador do Moodle com Programação PHP

O objetivo principal desse poste é desenvolver programação em linguagem PHP, em ambiente do Moodle, que recupere ou altere a senha do usuário administrador do Moodle.
    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 da senha passado pelo método GET:

$password=$_GET['password'];

//caso for vazio use 12345 como senha padrão
if(empty($password)){$password="12345";}

Caso o parâmetro não for passado, a senha será 12345. Isso indica que a passagem de parâmetro é opcional.

3° Passo
Recuperar id do usuário administrador pelo login:

$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
 $user=get_record_sql($sql);

if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}

O login padrão do administrador é admin. Caso tenha mudado isso após a instalação, atualize o novo login no parâmetro SQL. Você pode também  colocar login de qualquer usuário que não seja o administrador para alterar a senha. O processo de alteração da senha é a mesma para qualquer usuário.

4° Passo
Processar alteração na base de dados.

$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}

Nessa etapa, o comando SQL é executado no banco de dados através de funções da biblioteca PDO do ambiente Moodle.

Código Completo

Até então vimos o código em pedaço. Juntando tudo fica assim:
 
<?php
    require_once("../config.php");
    
     //receber parâmetro
    $password=$_GET['password'];
    //caso for vazio use 12345 como senha padrão
     if(empty($password)){$password="12345";}
    
 
 //extrair id do usuário admin pelo login
 $sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";
 $user=get_record_sql($sql);

if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}

//atualizar senha
$user->password=hash_internal_user_password($password);
$result= update_record('user', $user);
if($result){echo "Senha alterado com sucesso";}
    
?>

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

Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/admin_change_password.php?password=12345

O url já passa o parâmetro da senha que é opcional. É necessário lembrar que caso nenhum parâmetro for passado, o a será 12345. 

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.
  

Veja Também:

Recuperar Senha do Administrador do Moodle com Comando SQL

segunda-feira, 15 de novembro de 2010

Cadastrar Usuário no Moodle com Programação PHP

Veja versão atualizada desse post na comunidade Badiu - https://comunidade.badiu.com.br/mod/forum/discuss.php?d=604 o código foi atualizado para ficar compatível com a versão 2.x e 3.x do Moodle. 

Para cadastrar usuário no Moodle através código PHP, siga os seguintes passos:

1° Passo

Importe a biblioteca de funções do Moodle:

require_once("../config.php");

2° Passo
Receba os parâmetros do usuário passado pelo método GET:

    $firstname=$_GET['firstname'];
     $lastname=$_GET['lastname'];
     $username=$_GET['username'];
     $email=$_GET['email'];
     $password=$username;

    if(empty($firstname)){echo "Nome é um parâmetro obrigatório";exit;}
     if(empty($lastname)){echo "Sobrenome é um parâmetro obrigatório";exit;}
     if(empty($username)){echo "Login é um parâmetro obrigatório";exit;}
     if(empty($email)){echo "E-mail é um parâmetro obrigatório";exit;}

Não foi passado o parâmetro senha. Pois a senha é igual ao ligin como monstra o código: $password=$username;

3° Passo
Verificar se não há duplicação de dados de login e e-mail. Esses dados devem ser únicos para cada usuário.
   
    $existLogin=record_exists('user', 'username', $username);
     if($existLogin)echo "Login já existe <br>";
    
      $existEmail=record_exists('user', 'email', $email);
     if($existEmail)echo "E-mail já existe<br>";

4° Passo


Criar uma instância do objeto usuário. A instância reflete um mapeamento da tabela de mdl_user. Cada campo do objeto usuário dever corresponder a um campo da tabela mdl_user.
   
      $newuser=  new object();
        $newuser->id='';
        $newuser->auth='manual';
        $newuser->confirmed=1;
        $newuser->policyagreed=0;
        $newuser->deleted=0;
        $newuser->mnethostid=1;    
        $newuser->username=$username;
        $newuser->password=hash_internal_user_password($password);
        $newuser->idnumber='';
        $newuser->firstname=$firstname;
        $newuser->lastname=$lastname;
        $newuser->email=$email;
        $newuser->emailstop=0;
        $newuser->icq='';
        $newuser->skype='';
        $newuser->yahoo='';
        $newuser->aim='';
        $newuser->msn='';
        $newuser->phone1='';
        $newuser->phone2='';
        $newuser->institution='';
        $newuser->department='';
        $newuser->address='';
        $newuser->city=" ";
        $newuser->country='BR';
        $newuser->lang='pt_br_utf8';
    $newuser->theme='';
        $newuser->timezone=99;
        $newuser->firstaccess=0;
        $newuser->lastaccess=0;
        $newuser->lastlogin=0;
        $newuser->currentlogin='';
        $newuser->lastip='';
        $newuser->secret='';
        $newuser->picture=0;
        $newuser->url='';
        $newuser->description='';
        $newuser->mailformat=1;
        $newuser->maildigest=0;
        $newuser->maildisplay=2;
        $newuser->htmleditor=1;
        $newuser->ajax=1;
        $newuser->autosubscribe=1;
        $newuser->trackforums=0;
        $newuser->timemodified='';
        $newuser->trustbitmask='';
        $newuser->imagealt='';
        $newuser->screenreader=0;


Neste exemplo, a instância do usuário inicializa todos os campos que existem na tabela mdl_user da versão 1.9.3. Isso não é necessário. Mas é indispensável inicializar no objeto todos os campos que são obrigatórios na tabela mdl_user como:
  • firstname
  • lastname
  • e-mail
  • username
  • password

5° Passo
 Efetuar cadastro na base de dados e imprimir na tela o resultado, ou seja, o id do usuário recém cadastrado.


    if(!$existLogin && !$existEmail){
         $newuser->id = insert_record('user', $newuser);
            echo "Cadastro efetuado com sucesso. O id o usuário recém cadastrado         é: ".$newuser->id;
      }

O cadastro só deve ser feito caso não houver duplicação de login e e-mail.


Bem, esses 5 passos é tudo que você precisa para cadastrar um usuário no Moodle. Viu como é moleza.

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
     $firstname=$_GET['firstname'];
     $lastname=$_GET['lastname'];
     $username=$_GET['username'];
     $email=$_GET['email'];
     $password=$username;
    
     if(empty($firstname)){echo "Nome é um parâmetro obrigatório";exit;}
     if(empty($lastname)){echo "Sobrenome é um parâmetro obrigatório";exit;}
     if(empty($username)){echo "Login é um parâmetro obrigatório";exit;}
     if(empty($email)){echo "E-mail é um parâmetro obrigatório";exit;}

     //verificar se login já existe
     $existLogin=record_exists('user', 'username', $username);
     if($existLogin)echo "Login já existe <br>";
    
      //verificar se e-mail já existe
     $existEmail=record_exists('user', 'email', $email);
     if($existEmail)echo "E-mail já existe<br>";
    
    
     //criar um objeto usuário
        $newuser=  new object();
       
        $newuser->id='';
        $newuser->auth='manual';
        $newuser->confirmed=1;
        $newuser->policyagreed=0;
        $newuser->deleted=0;
        $newuser->mnethostid=1;    
        $newuser->username=$username;
        $newuser->password=hash_internal_user_password($password);
        $newuser->idnumber='';
        $newuser->firstname=$firstname;
        $newuser->lastname=$lastname;
        $newuser->email=$email;
        $newuser->emailstop=0;
        $newuser->icq='';
        $newuser->skype='';
        $newuser->yahoo='';
        $newuser->aim='';
        $newuser->msn='';
        $newuser->phone1='';
        $newuser->phone2='';
        $newuser->institution='';
        $newuser->department='';
        $newuser->address='';
        $newuser->city=" ";
        $newuser->country='BR';
        $newuser->lang='pt_br_utf8';
        $newuser->theme='';
        $newuser->timezone=99;
        $newuser->firstaccess=0;
        $newuser->lastaccess=0;
        $newuser->lastlogin=0;
        $newuser->currentlogin='';
        $newuser->lastip='';
        $newuser->secret='';
        $newuser->picture=0;
        $newuser->url='';
        $newuser->description='';
        $newuser->mailformat=1;
        $newuser->maildigest=0;
        $newuser->maildisplay=2;
        $newuser->htmleditor=1;
        $newuser->ajax=1;
        $newuser->autosubscribe=1;
        $newuser->trackforums=0;
        $newuser->timemodified='';
        $newuser->trustbitmask='';
        $newuser->imagealt='';
        $newuser->screenreader=0;
       
     //Cadastrar usuário
     if(!$existLogin && !$existEmail){
         $newuser->id = insert_record('user', $newuser);
        echo "Cadastro efetuado com sucesso. O id o usuário recém cadastrado é: ".$newuser->id;
      }
      
    
?>


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

Feito isso, acesse o endereço:
http://[endereço do moodle]/_extra/user_add.php?firstname=Pedro&lastname=Silva&username=pedro&email=pedro_2010@gmail.com

O url já passa os parâmetros necessários. Para ter certeza que tudo funcionou bem, tente logar com o usuário que cadastrou. Se funcionar é sinal que tudo está ok.

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 do Moodle. Caso ocorrer alguma falha com a versão do seu Moodle, tente editar o código para que cada campo do objeto seja igual a um campo da tabela mdl_user.
  

Veja Também:
Cadastrar Usuário no Moodle pelo Comando SQL

domingo, 14 de novembro de 2010

Listar Usuários Online do Moodle com Programação PHP


Para exibir os usuários online nos últimos 5 minutos com programação em PHP, siga os seguintes passos:


1° Passo
Importe a biblioteca de funções do Moodle:
require_once("../config.php");


2° Passo
Calcule a data em segundos de 5 minutos atrás:
$data=time()-(5*60);

3° Passo
Escreva o comando SQL para consultar os usuários online nos últimos 5 minutos:
$sql="SELECT DISTINCT u.id, u.firstname, u.lastname FROM {$CFG->prefix}user u INNER JOIN {$CFG->prefix}log l ON u.id = l.userid WHERE time >= $data " ;

4° Passo

Execute a consulta no Banco de Dados:
$users=get_records_sql($sql);    

5° Passo
Imprime na tela os usuários online:

$cont=0;   
    foreach ($users as $user){
        echo $user->id;
        echo " ";
        echo $user->firstname ." ".$user->lastname."<br>";
        $cont++;
    }
    
    echo $cont." usuario online";


Viu como é moleza. Agora juntando todo o código fica assim:

<?php
     require_once("../config.php");
     $data=time()-(5*60);
     $sql="SELECT DISTINCT u.id, u.firstname, u.lastname FROM {$CFG->prefix}user u INNER JOIN {$CFG->prefix}log l ON u.id = l.userid WHERE time >= $data " ;
     $users=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";
?>
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_online.php dentro da pasta _extra. Coloque o código php nesse arquivo.

Feito isso, acesse o endereço: http://[endereço do moodle]/_extra/user_online.php

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. 


Veja Também:
Listar Usuários Online do Moodle com Comando SQL

segunda-feira, 8 de novembro de 2010

Usar Bibliotecas de Funções do Sistema do Moodle para Desenvolvimento

A Plataforma Moodle tem uma excelente biblioteca. Trata-se de um conjunto de funções que compõe o core do sistema. Essas funções são utilizadas para implementar os módulos que compõem a Plataforma. 

O trabalho de desenvolvimento e customização do Moodle se torna muito mais rápido e fácil com o uso dessa biblioteca. 

Toda  biblioteca fica organizada na pasta lib no endereço raiz da instalação do Moodle.  Para torná-la disponível basta incluir o arquivo config.php no   início do arquivo de programação php com o seguinte comando:
 require_once("config.php");
 

Exercício
Para não ficar só na conversa, vamos fazer um exercício.

1°  Passo
Crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Dentro dessa pasta, crie um arquivo testelib.php. A pasta _extra será o local parta testes todos os exercícios de programação do Moodle. O nome _extra é para não confundir com as outras pastas que são padrões do Moodle.

2° Passo
Coloque o seguinte código no arquivo:

<?php
     require_once("../config.php");
     $sql="SELECT COUNT(id) AS cont FROM  {$CFG->prefix}user ";
     $usr=get_record_sql($sql);
     echo $usr->cont;
?>
3° Passo
Execucte o arquivo no navegador chamando pelo http://[endereço do moodle]/testelib.php
Feito isso, será impresso na tela a quantidade de usuários cadastrados na tabela usuário do Moodle.

Decifrar o Código
    Viu como é moleza. Agora vamos decifrar o código:

Primeira Linha de Código
require_once("config.php");
Esse comando importa as bibliotecas de função e inicializa as variáveis globais e sessão do Moodle.
Observação
Você já deve ter notado que os arquivos config.php e testelib.php estão na mesma pasta,  ou seja, a raiz da instalação do Moodle. Caso você crie uma subpasta teste para colocar o arquivo  testelib.php, altere o endereço de importação do arquivo config.php para require_once("../config.php");

Segunda Linha de Código
$sql="SELECT COUNT(id) AS cont FROM  {$CFG->prefix}user ";
Esse  comando monta SQL para consulta no banco de dados. O comando {$CFG->prefix} indica o prefixo da tabela.

Terceira Linha de Código
$usr=get_record_sql($sql);
Esse linha de comando executa a consulta no banco. Você deve estar perguntando: - Uai cadê o código que faz conexão como o banco? Bem, para sua surpresa, a biblioteca do Moodle cuida disso. Cabe você cuidar apenas da lógica de programação.

Quarta Linha de Código
echo $usr->cont;
Esse comando você já está careca de saber que apenas imprime na tela o resultado da consulta feita no banco.

Download
Se estiver com preguiça de criar o arquivo e digitar o código, faça download  desse exemplo. Descompacte o arquivo testelib.php 
e coloque na pasta raiz do seu Moodle e bom teste.

Bem, é primeiro teste é o nosso alou mundo de programação do Moodle. Mais novidades virão por aí.