Moodle api tutorial

38
Moodle API Piercarlo Fermino Soares

Transcript of Moodle api tutorial

Page 1: Moodle api   tutorial

Moodle API

Piercarlo Fermino Soares

Page 2: Moodle api   tutorial

Documentação

A documentação da api se encontra em:(instalação do moodle)/admin/webservice/documentation.php

Foi utilizado o tutorial:http://www.rumours.co.nz/manuals/using_moodle_web_services.htm

Github com exemplos:https://github.com/iaopier/webservices

Page 3: Moodle api   tutorial

Passos básicos

Primeiramente o web service deve ser habilitado no

moodle:Página inicial -> Administração do Site -> Opções avançadas -> Habilitar

serviços web (marcar).

Ou acessar:(instalação do moodle)/admin/settings.php?section=optionalsubsystems

e habilitar os serviços web.

Page 4: Moodle api   tutorial

Passos básicos

Page 5: Moodle api   tutorial

Passos básicos

Ainda é preciso habilitar o protocolo que o web service irá

utilizar.

O moodle trabalha com os protocolos AMF, REST, SOAP

ou XML-RPC.Página inicial -> Administração do site -> Plugins -> Serviços da web ->

Gerênciar protocolos (escolher o protocolo desejado).

Ou(instalação do moodle)/admin/settings.php?section=webserviceprotocols

Page 6: Moodle api   tutorial

Permissões dos métodos

Para utilizarmos o web service ainda é necessário

selecionar os métodos que podem ser acessados pelo web

service, para isso devemos criar um serviço externo:Página inicial -> Administração do site -> Plugins -> Serviços da Web ->

Serviços -> Externos -> Acrescentar

Ou

(instalação do moodle)/admin/webservice/service.php?id=0

Page 7: Moodle api   tutorial

Permissões dos métodos

Page 8: Moodle api   tutorial

Permissões dos métodos

Page 9: Moodle api   tutorial

Permissões dos métodos

Após criado o novo serviço externo, iremos definir quais

métodos ele pode utilizar:Página inicial -> Administração do site -> Plugins -> Serviços da Web ->

Serviços externos -> Funções

Ou(instalação do moodle)/moodle/admin/webservice/service_functions.php?id=2

Page 10: Moodle api   tutorial

Permissões dos métodos

Page 11: Moodle api   tutorial

Permissões dos métodos

Page 12: Moodle api   tutorial

Criando um usuário

Para uso das funções, precisamos de um usuário com as

capacidades suficientes para executar os métodos.

O usuário administrador possui todas as funções e pode

ser utilizado.

Ou podemos criar um novo usuário somente com as

permissões necessária.

Page 13: Moodle api   tutorial

Criando um usuários

Criar um novo usuário:Página inicial -> Administração do site -> Usuários -> Contas -> Mostrar lista

de usuários

Ou(instalação do moodle)/admin/user.php

Page 14: Moodle api   tutorial

Criando um usuários

Page 15: Moodle api   tutorial

Criando uma nova “role”

A “role” irá possuir as atribuições para que os métodos do

web service sejam utilizados. Para criar a nova role:Página inicial -> Administração do site -> Usuários -> Permissões -> Definir

funções

Ou(instalação do moodle)/admin/roles/manage.php

Page 16: Moodle api   tutorial

Criando uma nova “role”

Page 17: Moodle api   tutorial

Criando uma nova “role”

Page 18: Moodle api   tutorial

Criando uma nova “role”

Page 19: Moodle api   tutorial

Criando uma nova “role”

Page 20: Moodle api   tutorial
Page 21: Moodle api   tutorial

Atributos da nova “role”

webservice/xmlrpc:use

moodle/user:viewdetails

moodle/user:viewhiddendetails

moodle/course:useremail

moodle/user:create

moodle/user:delete

moodle/user:update

moodle/course:view

moodle/course:viewhiddencourses

moodle/course:update

enrol/manual:enrol

Page 22: Moodle api   tutorial

Atributos da nova “role”

Page 23: Moodle api   tutorial

Protocolo utilizado

Page 24: Moodle api   tutorial

Atribuir a nova “role”

Após a criação de definição das funções da nova role,

iremos fazer nosso usuário ser do tipo dela:Página inicial -> Administração do site -> Usuários -> Permissões -> Designar

funções globais

Ou(instalação do moodle)/admin/roles/assign.php?contextid=1

Page 25: Moodle api   tutorial

Atribuir a nova “role”

Page 26: Moodle api   tutorial

Criando um “token”

Para utilizar o serviço, um token gerado pelo moodle é

requerido na aplicação que irá consumir o web service.

Para criá-lo devemos ir em:Página inicial -> Administração do site -> Plugins -> Serviços da Web ->

Gerenciar tokens

Ou(instalação do moodle)/admin/settings.php?section=webservicetokens

Page 27: Moodle api   tutorial

Criando um “token”

Page 28: Moodle api   tutorial

Criando um “token”

Page 29: Moodle api   tutorial

Protocolo utilizado

Para esse tutorial, foi utilizado o XML-RPC ou XML

Remote Procedure Call.

No github, o tutorial está feito em REST:

https://github.com/iaopier/webservices

Page 30: Moodle api   tutorial

Códigos base

Para a utilização do XML-RPC:Criar a classe Moodle:class Moodle {

var $token = null;

var $server = null;

var $dir = null;

var $error = '';

function init($fields) {

$this->token = $fields['token'];

$this->server = $fields['server'];

$this->dir = $fields['dir'];

}

}

Page 31: Moodle api   tutorial

Códigos base

Request feita via XML-RPC, linha que cria o xml que será

enviado ao moodle:$request = xmlrpc_encode_request('core_user_get_users_by_id',

array(array((string) $user_id)), array('encoding'=>'UTF-8'));

Page 32: Moodle api   tutorial

Códigos base

$context = stream_context_create(array('http' => array('method' => "POST",'header' =>"Content-Type:

text/xml",'content' => $request)));

$path = $this->server.$this->dir."/webservice/xmlrpc/server.php?wstoken=".$this->token;

$file = file_get_contents($path, false, $context);

$response = xmlrpc_decode($file);

Page 33: Moodle api   tutorial

Exemplo de função

function getUser($user_id) {

$this->error = null;

$request = xmlrpc_encode_request('core_user_get_users_by_id', array(array((string) $user_id)), array('encoding'=>'UTF-8'));

$context = stream_context_create(array('http' => array('method' => "POST",'header' => "Content-Type: text/xml",

'content' => $request)));

$path = $this->server.$this->dir."/webservice/xmlrpc/server.php?wstoken=".$this->token;

$file = file_get_contents($path, false, $context);

$response = xmlrpc_decode($file);

if (!is_array($response) || !is_array($response[0]) || !array_key_exists('id', $response[0])) {

if ($response[faultCode])

$this->error = 'Moodle error: ' . $response[faultString] . ". Fault code: ".$response[faultCode]. ".";

else

$this->error = 'Moodle returned no info. Check if user id exists and whether the web service account has capabilities required to execute

core_user_get_users_by_id call.';

$this->error .= " Actual reply from server: ".$file;

return false;

}

$user = $response[0];

return $user;

}

Page 34: Moodle api   tutorial

Uso da documentação

Page 35: Moodle api   tutorial

Uso da documentação

Page 36: Moodle api   tutorial

Uso da documentação

$params = array(array('eventids'=>array($event_id),

'courseids'=>array($course_id),

'groupids'=>array($group_id)));

$request = xmlrpc_encode_request('core_calendar_get_calendar_events',

$params, array('encoding'=>'UTF-8'));

Page 37: Moodle api   tutorial

Uso da documentação

Page 38: Moodle api   tutorial

Obrigado!