Moodle API
Piercarlo Fermino Soares
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
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.
Passos básicos
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
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
Permissões dos métodos
Permissões dos métodos
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
Permissões dos métodos
Permissões dos métodos
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.
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
Criando um usuários
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
Criando uma nova “role”
Criando uma nova “role”
Criando uma nova “role”
Criando uma nova “role”
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
Atributos da nova “role”
Protocolo utilizado
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
Atribuir a nova “role”
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
Criando um “token”
Criando um “token”
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
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'];
}
}
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'));
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);
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;
}
Uso da documentação
Uso da documentação
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'));
Uso da documentação
Obrigado!
Top Related