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

Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zinebZineb ELGARRAI
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Alvaro Sanchez-Mariscal
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
How to implement multiple authentication guards in laravel 8
How to implement multiple authentication guards in laravel 8How to implement multiple authentication guards in laravel 8
How to implement multiple authentication guards in laravel 8Katy Slemon
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Gerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyLuca Milanesio
 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress ControllerJulien Pivotto
 
Integrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suiteIntegrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suiteBram Vogelaar
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciwiemfourati
 
Spring security oauth2
Spring security oauth2Spring security oauth2
Spring security oauth2axykim00
 

Mais procurados (20)

Cours partie1 elgarrai zineb
Cours partie1 elgarrai zinebCours partie1 elgarrai zineb
Cours partie1 elgarrai zineb
 
Spring security
Spring securitySpring security
Spring security
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Android presentation - Gradle ++
Android presentation - Gradle ++Android presentation - Gradle ++
Android presentation - Gradle ++
 
2 ModéLe Mvc
2 ModéLe Mvc2 ModéLe Mvc
2 ModéLe Mvc
 
Modele mvc
Modele mvcModele mvc
Modele mvc
 
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015Stateless authentication with OAuth 2 and JWT - JavaZone 2015
Stateless authentication with OAuth 2 and JWT - JavaZone 2015
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
How to implement multiple authentication guards in laravel 8
How to implement multiple authentication guards in laravel 8How to implement multiple authentication guards in laravel 8
How to implement multiple authentication guards in laravel 8
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Gerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and GroovyGerrit Code Review: how to script a plugin with Scala and Groovy
Gerrit Code Review: how to script a plugin with Scala and Groovy
 
Testing Ansible
Testing AnsibleTesting Ansible
Testing Ansible
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
HAProxy as Egress Controller
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
 
Integrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suiteIntegrating icinga2 and the HashiCorp suite
Integrating icinga2 and the HashiCorp suite
 
Spring Batch
Spring BatchSpring Batch
Spring Batch
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Curso struts e hibernate
Curso struts e hibernateCurso struts e hibernate
Curso struts e hibernate
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 
Spring security oauth2
Spring security oauth2Spring security oauth2
Spring security oauth2
 

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'));