]> git.mjollnir.org Git - moodle.git/commitdiff
Moved the REST interface for course modification from
authormoodler <moodler>
Sat, 23 Sep 2006 13:23:18 +0000 (13:23 +0000)
committermoodler <moodler>
Sat, 23 Sep 2006 13:23:18 +0000 (13:23 +0000)
course/format/topics/commands.php to a more generic place

course/rest.php [new file with mode: 0644]

diff --git a/course/rest.php b/course/rest.php
new file mode 100644 (file)
index 0000000..e6faa48
--- /dev/null
@@ -0,0 +1,155 @@
+<?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;
+}
+
+?>