SlideShare uma empresa Scribd logo
1 de 38
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!

Mais conteúdo relacionado

Mais procurados (20)

Php sessions & cookies
Php sessions & cookiesPhp sessions & cookies
Php sessions & cookies
 
Session handling in php
Session handling in phpSession handling in php
Session handling in php
 
Php and MySQL
Php and MySQLPhp and MySQL
Php and MySQL
 
Overlayfs and VFS
Overlayfs and VFSOverlayfs and VFS
Overlayfs and VFS
 
Loops PHP 04
Loops PHP 04Loops PHP 04
Loops PHP 04
 
Processes
ProcessesProcesses
Processes
 
PHP Cookies and Sessions
PHP Cookies and SessionsPHP Cookies and Sessions
PHP Cookies and Sessions
 
Shell Scripting in Linux
Shell Scripting in LinuxShell Scripting in Linux
Shell Scripting in Linux
 
Working with JSON
Working with JSONWorking with JSON
Working with JSON
 
Asynchronous JS in Odoo
Asynchronous JS in OdooAsynchronous JS in Odoo
Asynchronous JS in Odoo
 
Sqlmap
SqlmapSqlmap
Sqlmap
 
Mastering Moodle Web Services development
Mastering Moodle Web Services developmentMastering Moodle Web Services development
Mastering Moodle Web Services development
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Php string function
Php string function Php string function
Php string function
 
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
 
User management
User managementUser management
User management
 
php
phpphp
php
 
cours Php
cours Phpcours Php
cours Php
 
Php introduction
Php introductionPhp introduction
Php introduction
 
PHP - PDO Objects
PHP - PDO ObjectsPHP - PDO Objects
PHP - PDO Objects
 

Semelhante a Moodle api tutorial

Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Thyago Maia
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Maurício Linhares
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com CodeceptionQualister
 
Joomla + Moodle = Joomdle
Joomla + Moodle = JoomdleJoomla + Moodle = Joomdle
Joomla + Moodle = JoomdleObiz
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraDavid O'Keefe
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fdsRangel Javier
 
Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Maurício Linhares
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Rodrigo Urubatan
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Thyago Maia
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 

Semelhante a Moodle api tutorial (20)

Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
 
Servlets
ServletsServlets
Servlets
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04Curso de Ruby on Rails - Aula 04
Curso de Ruby on Rails - Aula 04
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
 
Joomla + Moodle = Joomdle
Joomla + Moodle = JoomdleJoomla + Moodle = Joomdle
Joomla + Moodle = Joomdle
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Apresentação formação web - up marketing digital - módulo ii - 2º fds
Apresentação   formação web - up marketing digital - módulo ii - 2º fdsApresentação   formação web - up marketing digital - módulo ii - 2º fds
Apresentação formação web - up marketing digital - módulo ii - 2º fds
 
Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03Curso de Ruby on Rails - Aula 03
Curso de Ruby on Rails - Aula 03
 
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1Desenvolvimento de sistemas web com php Frameworks - Aula 1
Desenvolvimento de sistemas web com php Frameworks - Aula 1
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
 
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 4 - 2019.1
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 

Moodle api tutorial

  • 2. 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
  • 3. 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.
  • 5. 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
  • 6. 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
  • 9. 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
  • 12. 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.
  • 13. 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
  • 15. 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
  • 16. Criando uma nova “role”
  • 17. Criando uma nova “role”
  • 18. Criando uma nova “role”
  • 19. Criando uma nova “role”
  • 20.
  • 21. 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
  • 22. Atributos da nova “role”
  • 24. 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
  • 25. Atribuir a nova “role”
  • 26. 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
  • 29. 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
  • 30. 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']; } }
  • 31. 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'));
  • 32. 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);
  • 33. 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; }
  • 36. 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'));