[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/lib/ajax/ -> service.php (source)

   1  <?php
   2  // This file is part of Moodle - http://moodle.org/
   3  //
   4  // Moodle is free software: you can redistribute it and/or modify
   5  // it under the terms of the GNU General Public License as published by
   6  // the Free Software Foundation, either version 3 of the License, or
   7  // (at your option) any later version.
   8  //
   9  // Moodle is distributed in the hope that it will be useful,
  10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12  // GNU General Public License for more details.
  13  //
  14  // You should have received a copy of the GNU General Public License
  15  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  16  
  17  /**
  18   * This file is used to call any registered externallib function in Moodle.
  19   *
  20   * It will process more than one request and return more than one response if required.
  21   * It is recommended to add webservice functions and re-use this script instead of
  22   * writing any new custom ajax scripts.
  23   *
  24   * @since Moodle 2.9
  25   * @package core
  26   * @copyright 2015 Damyon Wiese
  27   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  28   */
  29  
  30  define('AJAX_SCRIPT', true);
  31  
  32  require_once(__DIR__ . '/../../config.php');
  33  require_once($CFG->libdir . '/externallib.php');
  34  
  35  $rawjson = file_get_contents('php://input');
  36  
  37  $requests = json_decode($rawjson, true);
  38  if ($requests === null) {
  39      $lasterror = json_last_error_msg();
  40      throw new coding_exception('Invalid json in request: ' . $lasterror);
  41  }
  42  $responses = array();
  43  
  44  // Defines the external settings required for Ajax processing.
  45  $settings = external_settings::get_instance();
  46  $settings->set_file('pluginfile.php');
  47  $settings->set_fileurl(true);
  48  $settings->set_filter(true);
  49  $settings->set_raw(false);
  50  
  51  foreach ($requests as $request) {
  52      $response = array();
  53      $methodname = clean_param($request['methodname'], PARAM_ALPHANUMEXT);
  54      $index = clean_param($request['index'], PARAM_INT);
  55      $args = $request['args'];
  56  
  57      $response = external_api::call_external_function($methodname, $args, true);
  58      $responses[$index] = $response;
  59      if ($response['error']) {
  60          // Do not process the remaining requests.
  61          break;
  62      }
  63  }
  64  
  65  echo json_encode($responses);


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1