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

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

por Lino Vaz Moniz -
Número de respostas: 2
Este post é uma atualização do post  publicado no Blog Moodle PHP que mostra como cadastra usuário na Plataforma Moodle usando PHP.  O que foi publicado no blog há 10 anos, era compatível com versão 1.9. Agora esse post, faz atualização para tornar o código compatível com a versão 2.x e 3.x do Moodle. 
O lógica continua a mesma, só houve mudança de API que faz conexão com o banco. 
Bem vamos ao passo a passo. 

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:
 //forçar login para acessar esse código
require_login();

//receber parármetro
$param= new stdClass();
$firstname= required_param('firstname',PARAM_TEXT);
$lastname= required_param('lastname',PARAM_TEXT);
$username= required_param('username',PARAM_TEXT);
$email= required_param('email',PARAM_TEXT);
$password= $username;   
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.
    
//verificar se login já existe
$existLogin=$DB->record_exists('user', array('username'=> $username));
if($existLogin)echo "Login já existe <br>";

//verificar se e-mail já existe
$existEmail=$DB->record_exists('user', array('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 stdClass();
$newuser->id='';
$newuser->auth='manual';
$newuser->confirmed=1;
$newuser->mnethostid=1;
$newuser->username=$username;
$newuser->password=hash_internal_user_password($password);
$newuser->firstname=$firstname;
$newuser->lastname=$lastname;
$newuser->email=$email;
$newuser->timecreated=time();

Neste exemplo, a instância do usuário inicializa com os campos que são necessários na tabela mdl_user da versão.

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 = $DB->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.

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 todo os trechos do código php nesse arquivo.

Feito isso, acesse o endereço:

MOODLE_URL/_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.

Em resposta à Lino Vaz Moniz

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

por Igor Barbosa -

Boa tarde,

 

estava testando esse código e vi que no 5º passo faltou uma informação no qual dava chamada errada no record_insert

no caso $newuser->id = $DB -> insert_record('user', $newuser);

 

estava faltando a chamada do DB pro insert_record, após inserção dele o código funcionou perfeitamente