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; } if (debugging('',DEBUG_DEVELOPER)) { error_log(serialize($beforemod)); } 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; } ?>