[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/course/ -> rest.php (source)

   1  <?php
   2  
   3  // This file is part of Moodle - http://moodle.org/
   4  //
   5  // Moodle is free software: you can redistribute it and/or modify
   6  // it under the terms of the GNU General Public License as published by
   7  // the Free Software Foundation, either version 3 of the License, or
   8  // (at your option) any later version.
   9  //
  10  // Moodle is distributed in the hope that it will be useful,
  11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13  // GNU General Public License for more details.
  14  //
  15  // You should have received a copy of the GNU General Public License
  16  // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
  17  
  18  /**
  19   * Provide interface for topics AJAX course formats
  20   *
  21   * @copyright 1999 Martin Dougiamas  http://dougiamas.com
  22   * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   * @package course
  24   */
  25  
  26  if (!defined('AJAX_SCRIPT')) {
  27      define('AJAX_SCRIPT', true);
  28  }
  29  require_once(__DIR__ . '/../config.php');
  30  require_once($CFG->dirroot.'/course/lib.php');
  31  
  32  // Initialise ALL the incoming parameters here, up front.
  33  $courseid   = required_param('courseId', PARAM_INT);
  34  $class      = required_param('class', PARAM_ALPHA);
  35  $field      = optional_param('field', '', PARAM_ALPHA);
  36  $instanceid = optional_param('instanceId', 0, PARAM_INT);
  37  $sectionid  = optional_param('sectionId', 0, PARAM_INT);
  38  $beforeid   = optional_param('beforeId', 0, PARAM_INT);
  39  $value      = optional_param('value', 0, PARAM_INT);
  40  $column     = optional_param('column', 0, PARAM_ALPHA);
  41  $id         = optional_param('id', 0, PARAM_INT);
  42  $summary    = optional_param('summary', '', PARAM_RAW);
  43  $sequence   = optional_param('sequence', '', PARAM_SEQUENCE);
  44  $visible    = optional_param('visible', 0, PARAM_INT);
  45  $pageaction = optional_param('action', '', PARAM_ALPHA); // Used to simulate a DELETE command
  46  $title      = optional_param('title', '', PARAM_TEXT);
  47  
  48  $PAGE->set_url('/course/rest.php', array('courseId'=>$courseid,'class'=>$class));
  49  
  50  //NOTE: when making any changes here please make sure it is using the same access control as course/mod.php !!
  51  
  52  $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
  53  // Check user is logged in and set contexts if we are dealing with resource
  54  if (in_array($class, array('resource'))) {
  55      $cm = get_coursemodule_from_id(null, $id, $course->id, false, MUST_EXIST);
  56      require_login($course, false, $cm);
  57      $modcontext = context_module::instance($cm->id);
  58  } else {
  59      require_login($course);
  60  }
  61  $coursecontext = context_course::instance($course->id);
  62  require_sesskey();
  63  
  64  echo $OUTPUT->header(); // send headers
  65  
  66  // OK, now let's process the parameters and do stuff
  67  // MDL-10221 the DELETE method is not allowed on some web servers, so we simulate it with the action URL param
  68  $requestmethod = $_SERVER['REQUEST_METHOD'];
  69  if ($pageaction == 'DELETE') {
  70      $requestmethod = 'DELETE';
  71  }
  72  
  73  switch($requestmethod) {
  74      case 'POST':
  75  
  76          switch ($class) {
  77              case 'section':
  78  
  79                  if (!$DB->record_exists('course_sections', array('course'=>$course->id, 'section'=>$id))) {
  80                      throw new moodle_exception('AJAX commands.php: Bad Section ID '.$id);
  81                  }
  82  
  83                  switch ($field) {
  84                      case 'visible':
  85                          require_capability('moodle/course:sectionvisibility', $coursecontext);
  86                          $resourcestotoggle = set_section_visible($course->id, $id, $value);
  87                          echo json_encode(array('resourcestotoggle' => $resourcestotoggle));
  88                          break;
  89  
  90                      case 'move':
  91                          require_capability('moodle/course:movesections', $coursecontext);
  92                          move_section_to($course, $id, $value);
  93                          // See if format wants to do something about it
  94                          $response = course_get_format($course)->ajax_section_move();
  95                          if ($response !== null) {
  96                              echo json_encode($response);
  97                          }
  98                          break;
  99                  }
 100                  break;
 101  
 102              case 'resource':
 103                  switch ($field) {
 104                      case 'visible':
 105                          require_capability('moodle/course:activityvisibility', $modcontext);
 106                          set_coursemodule_visible($cm->id, $value);
 107                          \core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
 108                          break;
 109  
 110                      case 'duplicate':
 111                          require_capability('moodle/course:manageactivities', $coursecontext);
 112                          require_capability('moodle/backup:backuptargetimport', $coursecontext);
 113                          require_capability('moodle/restore:restoretargetimport', $coursecontext);
 114                          if (!course_allowed_module($course, $cm->modname)) {
 115                              throw new moodle_exception('No permission to create that activity');
 116                          }
 117                          $sr = optional_param('sr', null, PARAM_INT);
 118                          $result = mod_duplicate_activity($course, $cm, $sr);
 119                          echo json_encode($result);
 120                          break;
 121  
 122                      case 'groupmode':
 123                          require_capability('moodle/course:manageactivities', $modcontext);
 124                          set_coursemodule_groupmode($cm->id, $value);
 125                          \core\event\course_module_updated::create_from_cm($cm, $modcontext)->trigger();
 126                          break;
 127  
 128                      case 'indent':
 129                          require_capability('moodle/course:manageactivities', $modcontext);
 130                          $cm->indent = $value;
 131                          if ($cm->indent >= 0) {
 132                              $DB->update_record('course_modules', $cm);
 133                              rebuild_course_cache($cm->course);
 134                          }
 135                          break;
 136  
 137                      case 'move':
 138                          require_capability('moodle/course:manageactivities', $modcontext);
 139                          if (!$section = $DB->get_record('course_sections', array('course'=>$course->id, 'section'=>$sectionid))) {
 140                              throw new moodle_exception('AJAX commands.php: Bad section ID '.$sectionid);
 141                          }
 142  
 143                          if ($beforeid > 0){
 144                              $beforemod = get_coursemodule_from_id('', $beforeid, $course->id);
 145                              $beforemod = $DB->get_record('course_modules', array('id'=>$beforeid));
 146                          } else {
 147                              $beforemod = NULL;
 148                          }
 149  
 150                          $isvisible = moveto_module($cm, $section, $beforemod);
 151                          echo json_encode(array('visible' => (bool) $isvisible));
 152                          break;
 153                  }
 154                  break;
 155  
 156              case 'course':
 157                  switch($field) {
 158                      case 'marker':
 159                          require_capability('moodle/course:setcurrentsection', $coursecontext);
 160                          course_set_marker($course->id, $value);
 161                          break;
 162                  }
 163                  break;
 164          }
 165          break;
 166  
 167      case 'DELETE':
 168          switch ($class) {
 169              case 'resource':
 170                  require_capability('moodle/course:manageactivities', $modcontext);
 171                  course_delete_module($cm->id);
 172                  break;
 173          }
 174          break;
 175  }


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