MDL-24419 (4): Add conditional availability support to sections; section cache
Credit: original version done by Kirill Astashov of NetSpot (netspot.com.au), finished and tweaked by sam. This change adds conditional availability support for sections analagous to that already available for activities. (Backend, UI, backup/restore.) In order that this feature does not reduce performance, section cacheing has also been added using a new course 'sectioncache' field analagous to modinfo. The new feature integrates with activity availability so that activities inside sections which are not available are automatically not available themselves (meaning it works to restrict access).
This commit is contained in:
+29
-1
@@ -26,6 +26,10 @@
|
||||
require_once("../config.php");
|
||||
require_once("lib.php");
|
||||
require_once($CFG->libdir.'/filelib.php');
|
||||
require_once($CFG->libdir . '/gradelib.php');
|
||||
require_once($CFG->libdir . '/completionlib.php');
|
||||
require_once($CFG->libdir . '/conditionlib.php');
|
||||
|
||||
require_once('editsection_form.php');
|
||||
|
||||
$id = required_param('id',PARAM_INT); // Week/topic ID
|
||||
@@ -43,7 +47,17 @@ require_capability('moodle/course:update', $context);
|
||||
$editoroptions = array('context'=>$context ,'maxfiles' => EDITOR_UNLIMITED_FILES, 'maxbytes'=>$CFG->maxbytes, 'trusttext'=>false, 'noclean'=>true);
|
||||
$section = file_prepare_standard_editor($section, 'summary', $editoroptions, $context, 'course', 'section', $section->id);
|
||||
$section->usedefaultname = (is_null($section->name));
|
||||
$mform = new editsection_form($PAGE->url, array('course'=>$course, 'editoroptions'=>$editoroptions));
|
||||
|
||||
if (!empty($CFG->enableavailability)) {
|
||||
// Get section availability conditions from sectioncache.
|
||||
$modinfo = get_fast_modinfo($course);
|
||||
$sectioninfo = $modinfo->get_section_info($section->section);
|
||||
$section->conditionsgrade = $sectioninfo->conditionsgrade;
|
||||
$section->conditionscompletion = $sectioninfo->conditionscompletion;
|
||||
}
|
||||
|
||||
$mform = new editsection_form($PAGE->url, array('course' => $course, 'editoroptions' => $editoroptions,
|
||||
'cs' => $section, 'showavailability' => $section->showavailability));
|
||||
$mform->set_data($section); // set current value
|
||||
|
||||
if ($sectionreturn) {
|
||||
@@ -65,7 +79,21 @@ if ($mform->is_cancelled()){
|
||||
$data = file_postupdate_standard_editor($data, 'summary', $editoroptions, $context, 'course', 'section', $section->id);
|
||||
$section->summary = $data->summary;
|
||||
$section->summaryformat = $data->summaryformat;
|
||||
if (!empty($CFG->enableavailability)) {
|
||||
$section->availablefrom = $data->availablefrom;
|
||||
$section->availableuntil = $data->availableuntil;
|
||||
if (!empty($data->groupingid)) {
|
||||
$section->groupingid = $data->groupingid;
|
||||
}
|
||||
$section->showavailability = $data->showavailability;
|
||||
}
|
||||
$DB->update_record('course_sections', $section);
|
||||
if (!empty($CFG->enableavailability)) {
|
||||
// Update grade and completion conditions
|
||||
condition_info_section::update_section_from_form($section, $data);
|
||||
}
|
||||
rebuild_course_cache($course->id);
|
||||
|
||||
add_to_log($course->id, "course", "editsection", "editsection.php?id=$section->id", "$section->section");
|
||||
$PAGE->navigation->clear_cache();
|
||||
redirect($returnurl);
|
||||
|
||||
Reference in New Issue
Block a user