From b20540381357f19fdc3038b7310a8cb33e7ddcfa Mon Sep 17 00:00:00 2001 From: moodler Date: Sat, 23 Sep 2006 13:23:18 +0000 Subject: [PATCH] Moved the REST interface for course modification from course/format/topics/commands.php to a more generic place --- course/rest.php | 155 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 course/rest.php diff --git a/course/rest.php b/course/rest.php new file mode 100644 index 0000000000..e6faa482be --- /dev/null +++ b/course/rest.php @@ -0,0 +1,155 @@ +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; +} + +?> -- 2.39.5