--- /dev/null
+<?php // $Id$
+ // Provide interface for topics AJAX course formats
+
+require_once('../config.php');
+require_once($CFG->dirroot.'/course/lib.php');
+require_once($CFG->libdir .'/pagelib.php');
+require_once($CFG->libdir .'/blocklib.php');
+
+// Initialise ALL the incoming parameters here, up front.
+
+$courseid = required_param('courseId', PARAM_INT);
+$class = required_param('class', PARAM_ALPHA);
+
+$field = optional_param('field', '', PARAM_ALPHA);
+$instanceid = optional_param('instanceId', 0, PARAM_INT);
+$sectionid = optional_param('sectionId', 0, PARAM_INT);
+$beforeid = optional_param('beforeId', 0, PARAM_INT);
+$value = optional_param('value', 0, PARAM_INT);
+$column = optional_param('column', 0, PARAM_ALPHA);
+$id = optional_param('id', 0, PARAM_INT);
+$summary = optional_param('summary', '', PARAM_RAW);
+$sequence = optional_param('sequence', '', PARAM_SEQUENCE);
+$visible = optional_param('visible', 0, PARAM_INT);
+
+// Authorise the user and verify some incoming data
+
+if (!$course = get_record('course', 'id', $courseid)) {
+ error_log('AJAX commands.php: Course does not exist');
+ die;
+}
+
+$PAGE = page_create_object(PAGE_COURSE_VIEW, $course->id);
+$pageblocks = blocks_setup($PAGE,BLOCKS_PINNED_BOTH);
+
+if (!empty($instanceid)) {
+ $blockinstance = blocks_find_instance($instanceid, $pageblocks);
+ if (!$blockinstance || $blockinstance->pageid != $course->id || $blockinstance->pagetype != 'course-view') {
+ error_log('AJAX commands.php: Bad block ID '.$instanceid);
+ die;
+ }
+}
+
+$context = get_context_instance(CONTEXT_COURSE, $course->id);
+
+require_login($course->id);
+require_capability('moodle/course:update', $context);
+
+// OK, now let's process the parameters and do stuff
+
+switch($_SERVER['REQUEST_METHOD']) {
+ case 'POST':
+ switch ($class) {
+ case 'block':
+ switch ($field) {
+ case 'visible':
+ blocks_execute_action($PAGE, $pageblocks, 'toggle', $blockinstance);
+ break;
+
+ case 'position':
+ $newblockinstance = new object;
+ $newblockinstance->id = $blockinstance->id;
+ $newblockinstance->position = $column;
+ $newblockinstance->weight = $value;
+ if (!update_record('block_instance',$newblockinstance)) {
+ error_log('AJAX commands.php: Failed to update block with ID '.$blockinstance->id);
+ die;
+ }
+ break;
+ }
+ break;
+
+
+ case 'section':
+
+ if (!record_exists('course_sections','course',$course->id,'section',$id)) {
+ error_log('AJAX commands.php: Bad Section ID '.$id);
+ die;
+ }
+
+ switch ($field) {
+ case 'visible':
+ set_section_visible($course->id, $id, $value);
+ break;
+
+ case 'move':
+ move_section($course, $id, $value);
+ break;
+ }
+ break;
+
+ case 'resource':
+ if (!$mod = get_record('course_modules', 'id', $id, 'course', $course->id)) {
+ error_log('AJAX commands.php: Bad course module ID '.$id);
+ die;
+ }
+ switch ($field) {
+ case 'visible':
+ set_coursemodule_visible($mod->id, $value);
+ break;
+
+ case 'groupmode':
+ set_coursemodule_groupmode($mod->id, $value);
+ break;
+
+ case 'move':
+ if (!$section = get_record('course_sections','course',$course->id,'section',$sectionid)) {
+ error_log('AJAX commands.php: Bad section ID '.$sectionid);
+ die;
+ }
+
+ if ($beforeid > 0){
+ $beforemod = get_record('course_modules', 'id', $beforeid);
+ } else {
+ $beforemod = NULL;
+ }
+
+ moveto_module($mod, $section, $beforemod);
+ break;
+ }
+ break;
+
+ case 'course':
+ switch($field) {
+ case 'marker':
+ $newcourse = new object;
+ $newcourse->id = $course->id;
+ $newcourse->marker = $value;
+ if (!update_record('course',$newcourse)) {
+ error_log('AJAX commands.php: Failed to update course marker for course '.$newcourse->id);
+ die;
+ }
+ break;
+ }
+ break;
+ }
+ break;
+
+ case 'DELETE':
+ switch ($class) {
+ case 'block':
+ blocks_execute_action($PAGE, $pageblocks, 'delete', $blockinstance);
+ break;
+
+ case 'resource':
+ if (!$mod = get_record('course_modules', 'id', $id, 'course', $course->id)) {
+ error_log('AJAX commands.php: Bad course module ID '.$id);
+ die;
+ }
+ delete_course_module($id);
+ break;
+ }
+ break;
+}
+
+?>