Skip to content

Commit

Permalink
MDL-58777 mod_lesson: Explicitly sort records and set event priority
Browse files Browse the repository at this point in the history
The lesson update events code depends on the "old" events in the
DB being returned in the same order as they were originally made,
however there was no guarantee that this would be the case.

There were also situations where the priority would not be explicitly
set (e.g., when creating the "original" event).
  • Loading branch information
cameorn1730 committed May 10, 2017
1 parent 4133df6 commit 8dada7e
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions mod/lesson/lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,17 @@ function lesson_update_events($lesson, $override = null) {
$conds['groupid'] = $override->groupid;
}
}
$oldevents = $DB->get_records('event', $conds);
$oldevents = $DB->get_records('event', $conds, 'id ASC');

// Now make a to-do list of all that needs to be updated.
if (empty($override)) {
// We are updating the primary settings for the lesson, so we need to add all the overrides.
$overrides = $DB->get_records('lesson_overrides', array('lessonid' => $lesson->id));
// As well as the original lesson (empty override).
$overrides[] = new stdClass();
$overrides = $DB->get_records('lesson_overrides', array('lessonid' => $lesson->id), 'id ASC');
// It is necessary to add an empty stdClass to the beginning of the array as the $oldevents
// list contains the original (non-override) event for the module. If this is not included
// the logic below will end up updating the wrong row when we try to reconcile this $overrides
// list against the $oldevents list.
array_unshift($overrides, new stdClass());
} else {
// Just do the one override.
$overrides = array($override);
Expand Down Expand Up @@ -167,6 +170,7 @@ function lesson_update_events($lesson, $override = null) {
$event->timesort = $available;
$event->visible = instance_is_visible('lesson', $lesson);
$event->eventtype = LESSON_EVENT_TYPE_OPEN;
$event->priority = null;

// Determine the event name and priority.
if ($groupid) {
Expand Down

0 comments on commit 8dada7e

Please sign in to comment.