Inscrever participantes (aluno /tutor) no curso do Moodle com webservice usando PHP

Inscrever participantes (aluno /tutor) no curso do Moodle com webservice usando PHP

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

Este post mostra código PHP para efetuar matrícula aluno, tutor ou qualquer outro participantes no curso, 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 participantes. O código a seguir usa função que realiza inscrição pelo método manual.  Se inscrição for efetuado com sucesso, retorna vazio. 

//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']="enrol_manual_enrol_users";
  
  $enrol1=array();
 $enrol1['roleid'] = 5; //Altere o parâmetro para id do perfil 
 $enrol1['userid'] = 10; //Altere o parâmetro para id do usuário
 $enrol1['courseid'] =2; // Altere o parâmetro para id do curso
 $enrol1['timestart'] =time(); // Altere o parâmetro da data de início da inscrição

 $enrol2=array();
 $enrol2['roleid'] = 4; //Altere o parâmetro para id do perfil 
 $enrol2['userid'] = 11; //Altere o parâmetro para id do usuário
 $enrol2['courseid'] =3; // Altere o parâmetro para id do curso
 $enrol2['timestart'] =time(); // Altere o parâmetro da data de início da inscrição

$param['enrolments'][0]=$enrol1;
$param['enrolments'][1]=$enrol2;

//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 {
roleid int   //Role to assign to the user
userid int   //The user that is going to be enrolled
courseid int   //The course to enrol the user role in
timestart int  Opcional //Timestamp when the enrolment start
timeend int  Opcional //Timestamp when the enrolment end
suspend int  Opcional //set to 1 to suspend the enrolment
} 
)