. /** * This file is used to call any registered externallib function in Moodle. * * It will process more than one request and return more than one response if required. * It is recommended to add webservice functions and re-use this script instead of * writing any new custom ajax scripts. * * @since Moodle 2.9 * @package core * @copyright 2015 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ define('AJAX_SCRIPT', true); require_once(dirname(__FILE__) . '/../../config.php'); require_once($CFG->libdir . '/externallib.php'); $rawjson = file_get_contents('php://input'); $requests = json_decode($rawjson, true); if ($requests === null) { $lasterror = json_last_error_msg(); throw new coding_exception('Invalid json in request: ' . $lasterror); } $responses = array(); foreach ($requests as $request) { $response = array(); $methodname = clean_param($request['methodname'], PARAM_ALPHANUMEXT); $index = clean_param($request['index'], PARAM_INT); $args = $request['args']; $response = external_api::call_external_function($methodname, $args, true); $responses[$index] = $response; if ($response['error']) { // Do not process the remaining requests. break; } } echo json_encode($responses);