diff --git a/public/course/format/classes/base.php b/public/course/format/classes/base.php index 41618a37667..093bea55ca1 100644 --- a/public/course/format/classes/base.php +++ b/public/course/format/classes/base.php @@ -1826,7 +1826,7 @@ abstract class base { // Remove the marker if it points to this section. if ($section->section == $course->marker) { - course_set_marker($course->id, 0); + \core_courseformat\formatactions::section($course->id)->remove_all_markers(); } $lastsection = $DB->get_field_sql('SELECT max(section) from {course_sections} diff --git a/public/course/format/tests/local/sectionactions_test.php b/public/course/format/tests/local/sectionactions_test.php index 8e50214a7f5..203d74dd48c 100644 --- a/public/course/format/tests/local/sectionactions_test.php +++ b/public/course/format/tests/local/sectionactions_test.php @@ -399,7 +399,8 @@ final class sectionactions_test extends \advanced_testcase { ); // Remove marked section. - course_set_marker($course->id, 1); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info(1); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); $this->assertTrue(course_get_format($course)->is_section_current(1)); $this->assertTrue($sectionactions->delete( get_fast_modinfo($course)->get_section_info(1), diff --git a/public/course/format/topics/classes/courseformat/stateactions.php b/public/course/format/topics/classes/courseformat/stateactions.php index 69f310501f8..5d1abb245f4 100644 --- a/public/course/format/topics/classes/courseformat/stateactions.php +++ b/public/course/format/topics/classes/courseformat/stateactions.php @@ -68,7 +68,8 @@ class stateactions extends stateactions_base { } // Mark the new one. - course_set_marker($course->id, $section->section); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($section->section); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); $updates->add_section_put($section->id); if ($previousmarker) { $section = $modinfo->get_section_info($previousmarker); @@ -103,7 +104,7 @@ class stateactions extends stateactions_base { // Get the previous marked section and unmark it. $modinfo = get_fast_modinfo($course); $previousmarker = $DB->get_field("course", "marker", ['id' => $course->id]); - course_set_marker($course->id, 0); + \core_courseformat\formatactions::section($course->id)->remove_all_markers(); $section = $modinfo->get_section_info($previousmarker, MUST_EXIST); $updates->add_section_put($section->id); diff --git a/public/course/format/topics/format.php b/public/course/format/topics/format.php index 9a7f9d55b6b..4d923fdcb94 100644 --- a/public/course/format/topics/format.php +++ b/public/course/format/topics/format.php @@ -44,7 +44,12 @@ $context = context_course::instance($course->id); if (($marker >= 0) && has_capability('moodle/course:setcurrentsection', $context) && confirm_sesskey()) { $course->marker = $marker; - course_set_marker($course->id, $marker); + if ($marker == 0) { + \core_courseformat\formatactions::section($course->id)->remove_all_markers(); + } else { + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($marker); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); + } } // Make sure section 0 is created. diff --git a/public/course/format/topics/lib.php b/public/course/format/topics/lib.php index f2279d46d7b..3d326f72a42 100644 --- a/public/course/format/topics/lib.php +++ b/public/course/format/topics/lib.php @@ -388,7 +388,12 @@ class format_topics extends core_courseformat\base { if ($section->section && ($action === 'setmarker' || $action === 'removemarker')) { // Format 'topics' allows to set and remove markers in addition to common section actions. require_capability('moodle/course:setcurrentsection', context_course::instance($this->courseid)); - course_set_marker($this->courseid, ($action === 'setmarker') ? $section->section : 0); + if ($action === 'setmarker') { + $sectioninfo = get_fast_modinfo($this->courseid)->get_section_info($section->section); + \core_courseformat\formatactions::section($this->courseid)->set_marker($sectioninfo, true); + } else { + \core_courseformat\formatactions::section($this->courseid)->remove_all_markers(); + } return null; } diff --git a/public/course/format/topics/tests/courseformat/stateactions_test.php b/public/course/format/topics/tests/courseformat/stateactions_test.php index ebe1938eeba..3ebcefe6a84 100644 --- a/public/course/format/topics/tests/courseformat/stateactions_test.php +++ b/public/course/format/topics/tests/courseformat/stateactions_test.php @@ -135,7 +135,8 @@ final class stateactions_test extends \advanced_testcase { ); // Highlight section 1. - course_set_marker($course->id, 1); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info(1); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); $this->enrol_user($course, $rolename); diff --git a/public/course/lib.php b/public/course/lib.php index c1a01451fe2..45a0b3f5205 100644 --- a/public/course/lib.php +++ b/public/course/lib.php @@ -972,11 +972,14 @@ function move_section_to($course, $section, $destination, $ignorenumsections = f // If we move the highlighted section itself, then just highlight the destination. // Adjust the higlighted section location if we move something over it either direction. if ($section == $course->marker) { - course_set_marker($course->id, $destination); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($destination); + formatactions::section($course->id)->set_marker($sectioninfo, true); } else if ($section > $course->marker && $course->marker >= $destination) { - course_set_marker($course->id, $course->marker+1); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($course->marker + 1); + formatactions::section($course->id)->set_marker($sectioninfo, true); } else if ($section < $course->marker && $course->marker <= $destination) { - course_set_marker($course->id, $course->marker-1); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($course->marker - 1); + formatactions::section($course->id)->set_marker($sectioninfo, true); } $transaction->allow_commit(); diff --git a/public/course/tests/courselib_test.php b/public/course/tests/courselib_test.php index cb37f96b5e4..d2d9966e297 100644 --- a/public/course/tests/courselib_test.php +++ b/public/course/tests/courselib_test.php @@ -1046,7 +1046,9 @@ final class courselib_test extends advanced_testcase { $course = $this->getDataGenerator()->create_course(array('numsections'=>10), array('createsections'=>true)); // Set course marker to the section we are going to move.. - course_set_marker($course->id, 2); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info(2); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); + // Verify that the course marker is set correctly. $course = $DB->get_record('course', array('id' => $course->id)); $this->assertEquals(2, $course->marker); @@ -1266,7 +1268,8 @@ final class courselib_test extends advanced_testcase { 3 => array($assign5->cmid)), get_fast_modinfo($course)->sections); // Remove marked section. - course_set_marker($course->id, 1); + $sectioninfo = get_fast_modinfo($course->id)->get_section_info(1); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); $this->assertTrue(course_get_format($course)->is_section_current(1)); $this->assertTrue(course_delete_section($course, 1, true)); $this->assertFalse(course_get_format($course)->is_section_current(1)); diff --git a/public/course/view.php b/public/course/view.php index 08440309463..ae0b7f30460 100644 --- a/public/course/view.php +++ b/public/course/view.php @@ -228,7 +228,13 @@ if ($PAGE->user_allowed_editing()) { 'The marker param in course view is deprecated. Please use course/format/update.php instead.', DEBUG_DEVELOPER ); - course_set_marker($course->id, $marker); + if ($marker == 0) { + \core_courseformat\formatactions::section($course->id)->remove_all_markers(); + } else { + $sectioninfo = get_fast_modinfo($course->id)->get_section_info($marker); + \core_courseformat\formatactions::section($course->id)->set_marker($sectioninfo, true); + } + if ($sectionid) { redirect(course_get_url($course, $section, ['navigation' => true])); } else {