Lawrence Lagerlof
Posted on December 20, 2019
What it does, exactly?
MoodleRest allow you to easily make GET or POST requests to query or update information from many webservices available on Moodle.
"Moodle is a learning platform designed to provide educators, administrators and learners with a single robust, secure and integrated system to create personalised learning environments".
This lib can return information from Moodle webservices in one of these formats:
- array
- json
- xml
The GitHub project page
https://github.com/llagerlof/MoodleRest
This dev.to article covers the basics. Many more examples and other features on project page.
Requirements
Ensure you already have access to a Moodle webservice. To use this class you will need a token (generated by Moodle admin) with the necessary capabilities for the services you want to access.
To the code
You have 2 options to add this lib to your project:
Option One
Use Composer to include it in your project.
- Inside your project directory create or modify the file
composer.json
:
{
"require": {
"llagerlof/moodlerest": "2.3.0"
}
}
- In the same directory of the
composer.json
, run:
$ composer install
- In your project, load the lib using composer autoloader:
<?php
require_once dirname(__FILE__) . '/vendor/autoload.php';
Option Two
Just include the MoodleRest.php
class directly in your script.
require_once dirname(__FILE__) . '/MoodleRest.php';
The MoodleRest
constructor
You can pass 2 parameters:
- A full url path to the Moodle webserver
- The token generated by Moodle admin.
Example:
$MoodleRest = new MoodleRest(
'http://127.0.0.1/moodle/webservice/rest/server.php',
'8f12e614dae30735260a045313caa400'
);
The method request()
This method needs at least 2 parameters:
- The webservice functiona name (string).
- The parameters (array) passed to the webservice. The MoodleRest will internally convert this array to a query string. If you need to learn how to build an array compatible to each webservice's function I have you covered!
Query example (GET)
Query 2 Moodle groups with IDs 1 and 2, passing the server URL and token in constructor using the request
method.
$MoodleRest = new MoodleRest(
'http://127.0.0.1/moodle/webservice/rest/server.php',
'8f12e614dae30735260a045313caa400'
);
$groups = $MoodleRest->request(
'core_group_get_groups',
array('groupids' => array(1,2))
);
print_r($groups);
Inserting data example (POST)
Set the server and token in constructor and make a request to create a group on Moodle.
$MoodleRest = new MoodleRest(
'http://127.0.0.1/moodle/webservice/rest/server.php',
'8f12e614dae30735260a045313caa400'
);
$new_group = array(
'groups' => array(
array(
'courseid' => 2,
'name' => 'Group name',
'description' => 'Group description'
)
)
);
/*
The default request's METHOD is to make a GET request, but you can change it to POST.
This is recommended when inserting and updating data.
*/
$return = $MoodleRest->request(
'core_group_create_groups',
$new_group,
MoodleRest::METHOD_POST
);
// If you want the requested URL
echo $MoodleRest->getUrl();
That's it! Quick and easy.
More features and examples on project page.
Posted on December 20, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.