Top Banner
Moodle API Piercarlo Fermino Soares
38

Moodle api tutorial

Jul 14, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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!