* @param int $section Section number (not id!!!)
* @param int $move (-1 or 1)
* @return boolean true if section moved successfully
+ * @todo MDL-33379 remove this function in 2.5
*/
function move_section($course, $section, $move) {
+ debugging('This function will be removed before 2.5 is released please use move_section_to', DEBUG_DEVELOPER);
+
/// Moves a whole course section up and down within the course
global $USER, $DB;
return false;
}
- if (!$sectionrecord = $DB->get_record("course_sections", array("course"=>$course->id, "section"=>$section))) {
- return false;
- }
-
- if (!$sectiondestrecord = $DB->get_record("course_sections", array("course"=>$course->id, "section"=>$sectiondest))) {
- return false;
- }
-
- // Three-step change ensures that the section always remains unique (there is
- // a unique index now)
- $DB->set_field("course_sections", "section", -$sectiondest, array("id"=>$sectionrecord->id));
- $DB->set_field("course_sections", "section", $section, array("id"=>$sectiondestrecord->id));
- $DB->set_field("course_sections", "section", $sectiondest, array("id"=>$sectionrecord->id));
-
- // Update highlighting if the move affects highlighted section
- if ($course->marker == $section) {
- course_set_marker($course->id, $sectiondest);
- } elseif ($course->marker == $sectiondest) {
- course_set_marker($course->id, $section);
+ $retval = move_section_to($course, $section, $sectiondest);
+ // If section moved, then rebuild course cache.
+ if ($retval) {
+ rebuild_course_cache($course->id, true);
}
-
-
- // Fix order if needed. The database prevents duplicate sections, but it is
- // possible there could be a gap in the numbering.
- $sections = $DB->get_records('course_sections', array('course'=>$course->id), 'section ASC');
- $n = 0;
- foreach ($sections as $section) {
- if ($section->section != $n) {
- $DB->set_field('course_sections', 'section', $n, array('id'=>$section->id));
- }
- $n++;
- }
- // After moving section, rebuild course cache.
- rebuild_course_cache($course->id, true);
- return true;
+ return $retval;
}
/**
return true;
}
- if ($destination > $course->numsections) {
+ if (($destination > $course->numsections) || ($destination < 1)) {
return false;
}
unset($sections[$id]);
}
if ($position == $target_position) {
+ if ($target_position < $origin_position) {
+ $append_array[$id] = $position;
+ unset($sections[$id]);
+ }
$found = true;
}
}
$this->assertEquals($oldsections[5], $neworder[5]);
$this->assertEquals($oldsections[6], $neworder[6]);
+ $neworder = reorder_sections($sections, 4, 2);
+ $neworder = array_keys($neworder);
+ $this->assertEquals($oldsections[0], $neworder[0]);
+ $this->assertEquals($oldsections[1], $neworder[1]);
+ $this->assertEquals($oldsections[2], $neworder[3]);
+ $this->assertEquals($oldsections[3], $neworder[4]);
+ $this->assertEquals($oldsections[4], $neworder[2]);
+ $this->assertEquals($oldsections[5], $neworder[5]);
+ $this->assertEquals($oldsections[6], $neworder[6]);
+
$neworder = reorder_sections(1, 2, 4);
$this->assertFalse($neworder);
}
if (!empty($section)) {
if (!empty($move) and confirm_sesskey()) {
- if (move_section($course, $section, $move)) {
+ $destsection = $section + $move;
+ if (move_section_to($course, $section, $destsection)) {
+ // Rebuild course cache, after moving section
+ rebuild_course_cache($course->id, true);
if ($course->id == SITEID) {
redirect($CFG->wwwroot . '/?redirect=0');
} else {