Cadastrar usuário no Moodle com webservice usando PHP

Cadastrar usuário no Moodle com webservice usando PHP

por Lino Vaz Moniz -
Número de respostas: 2

Este post mostra código PHP para efetuar cadastro de usuário na Plataforma Moodle, usando função webservice do Moodle. 

Para usar este código, instale no Moodle o plugin restjonson, protocolo de comunicação json para webservice

Segue código do cliente PHP. Nesse código você pode cadastrar uma ou mais usuário. O retorno é um array com dados de username e id gerado para cada usuário. 

//url de acesso
  $remotemoodle="xxxxxxxxxxx"; //MOODLE_URL - endereço do Moodle
  $url=$remotemoodle . '/webservice/restjson/server.php';

  //parametros a ser passado ao webservice
  $param=array();
  $param['wstoken']="xxxxxx"; //token de acesso ao webservice
  $param['wsfunction']="core_user_create_users";

$user1=array();
$user1['username'] = 'loguinsuer1';
$user1['password'] = 'senhauser1';
$user1['firstname'] = 'Nome user1';
$user1['lastname'] = 'Sobrenome user1';
$user1['email'] = 'Email user1';
$user1['auth'] = 'manual'; //nome do plugin de autenticação

$user2=array();
$user2['username'] = 'loguinsuer2';
$user2['password'] = 'senhauser2';
$user2['firstname'] = 'Nome user2';
$user2['lastname'] = 'Sobrenome user2';
$user2['email'] = 'Email user2';
$user2['auth'] = 'manual'; //nome do plugin de autenticação

//adicionar lista de usuário nos parâmetros
$param['users'][0]=$user1;
$param['users'][1]=$user2;

//converter array para json
  $paramjson = json_encode($param);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, 0);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $paramjson);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  $result =json_decode($result);
  
  //imprimindo resultado
  print_r($result);

Veja layout da dados que webservice pode receber 

Estrutura geral
list of (
object {
username string //Username policy is defined in Moodle security config.
password string Opcional //Plain text password consisting of any characters
createpassword int Opcional //True if password should be created and mailed to user.
firstname string //The first name(s) of the user
lastname string //The family name of the user
email string //A valid and unique email address
auth string Padrão para "manual" //Auth plugins include manual, ldap, etc
idnumber string Padrão para "" //An arbitrary ID code number perhaps from the institution
lang string Padrão para "pt_br" //Language code such as "en", must exist on server
calendartype string Padrão para "gregorian" //Calendar type such as "gregorian", must exist on server
theme string Opcional //Theme name such as "standard", must exist on server
timezone string Opcional //Timezone code such as Australia/Perth, or 99 for default
mailformat int Opcional //Mail format code is 0 for plain text, 1 for HTML etc
description string Opcional //User profile description, no HTML
city string Opcional //Home city of the user
country string Opcional //Home country code of the user, such as AU or CZ
firstnamephonetic string Opcional //The first name(s) phonetically of the user
lastnamephonetic string Opcional //The family name phonetically of the user
middlename string Opcional //The middle name of the user
alternatename string Opcional //The alternate name of the user
preferences Opcional //User preferences
list of (
object {
type string //The name of the preference
value string //The value of the preference
}
)customfields Opcional //User custom fields (also known as user profil fields)
list of (
object {
type string //The name of the custom field
value string //The value of the custom field
}
)}
)
Em resposta à Lino Vaz Moniz

Re: Cadastrar usuário no Moodle com webservice usando PHP

por Jader Gabriel -

OLá, segui o passo a passo e deu a mensagem:

{"exception":"invalid_parameter_exception","errorcode":"invalidparameter","message":"Valor inv\u00e1lido de par\u00e2metro detectado"}

Em resposta à Lino Vaz Moniz

Re: Cadastrar usuário no Moodle com webservice usando PHP

por Jader Gabriel -

Teria um campo em que podemos usar para desativar o acesso do usuário ao moodle, pela API? Algum boolean ou valor que equivalha ao 'desativar usuario' que é possível na interface admin?