Download - Moodle api tutorial
![Page 1: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/1.jpg)
Moodle API
Piercarlo Fermino Soares
![Page 2: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/4.jpg)
Passos básicos
![Page 5: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/7.jpg)
Permissões dos métodos
![Page 8: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/8.jpg)
Permissões dos métodos
![Page 9: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/10.jpg)
Permissões dos métodos
![Page 11: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/11.jpg)
Permissões dos métodos
![Page 12: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/14.jpg)
Criando um usuários
![Page 15: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/16.jpg)
Criando uma nova “role”
![Page 17: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/17.jpg)
Criando uma nova “role”
![Page 18: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/18.jpg)
Criando uma nova “role”
![Page 19: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/19.jpg)
Criando uma nova “role”
![Page 20: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/20.jpg)
![Page 21: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/22.jpg)
Atributos da nova “role”
![Page 23: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/23.jpg)
Protocolo utilizado
![Page 24: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/25.jpg)
Atribuir a nova “role”
![Page 26: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/27.jpg)
Criando um “token”
![Page 28: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/28.jpg)
Criando um “token”
![Page 29: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/34.jpg)
Uso da documentação
![Page 35: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/35.jpg)
Uso da documentação
![Page 36: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/37.jpg)
Uso da documentação
![Page 38: Moodle api tutorial](https://reader034.vdocuments.com.br/reader034/viewer/2022042501/55a4d14f1a28abae758b4716/html5/thumbnails/38.jpg)
Obrigado!