. /** * 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(__DIR__ . '/../../config.php'); require_once($CFG->libdir . '/externallib.php'); define('PREFERRED_RENDERER_TARGET', RENDERER_TARGET_GENERAL); $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(); // Defines the external settings required for Ajax processing. $settings = external_settings::get_instance(); $settings->set_file('pluginfile.php'); $settings->set_fileurl(true); $settings->set_filter(true); $settings->set_raw(false); 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);