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.
Top comments (0)