diff --git a/course/view.php b/course/view.php index 6acd0f83a64..3cc2d0c3da9 100644 --- a/course/view.php +++ b/course/view.php @@ -288,7 +288,7 @@ // anything after that point. $eventdata = array('context' => context_course::instance($course->id)); if (!empty($section) && (int)$section == $section) { - $eventdata['other'] = array('coursesectionid' => $section); + $eventdata['other'] = array('coursesectionnumber' => $section); } $event = \core\event\course_viewed::create($eventdata); $event->trigger(); diff --git a/lib/classes/event/course_viewed.php b/lib/classes/event/course_viewed.php index 1af160a04e8..a63e3cea8ff 100644 --- a/lib/classes/event/course_viewed.php +++ b/lib/classes/event/course_viewed.php @@ -33,7 +33,7 @@ defined('MOODLE_INTERNAL') || die(); * @property-read array $other { * Extra information about the event. * - * - int coursesectionid: (optional) The course section ID. + * - int coursesectionnumber: (optional) The course section number. * } * * @package core @@ -59,7 +59,17 @@ class course_viewed extends base { * @return string */ public function get_description() { - return "The user with id '$this->userid' viewed the course with id '$this->courseid'."; + + // We keep compatibility with 2.7 and 2.8 other['coursesectionid']. + $sectionstr = ''; + if (!empty($this->other['coursesectionnumber'])) { + $sectionstr = "section number '{$this->other['coursesectionnumber']}' of the "; + } else if (!empty($this->other['coursesectionid'])) { + $sectionstr = "section number '{$this->other['coursesectionid']}' of the "; + } + $description = "The user with id '$this->userid' viewed the " . $sectionstr . "course with id '$this->courseid'."; + + return $description; } /** @@ -78,13 +88,17 @@ class course_viewed extends base { */ public function get_url() { global $CFG; - $sectionid = null; - if (isset($this->other['coursesectionid'])) { - $sectionid = $this->other['coursesectionid']; + + // We keep compatibility with 2.7 and 2.8 other['coursesectionid']. + $sectionnumber = null; + if (isset($this->other['coursesectionnumber'])) { + $sectionnumber = $this->other['coursesectionnumber']; + } else if (isset($this->other['coursesectionid'])) { + $sectionnumber = $this->other['coursesectionid']; } require_once($CFG->dirroot . '/course/lib.php'); try { - return course_get_url($this->courseid, $sectionid); + return course_get_url($this->courseid, $sectionnumber); } catch (\Exception $e) { return null; } @@ -101,9 +115,15 @@ class course_viewed extends base { return null; } - if (isset($this->other['coursesectionid'])) { - return array($this->courseid, 'course', 'view section', 'view.php?id=' . $this->courseid . '&sectionid=' - . $this->other['coursesectionid'], $this->other['coursesectionid']); + // We keep compatibility with 2.7 and 2.8 other['coursesectionid']. + if (isset($this->other['coursesectionnumber']) || isset($this->other['coursesectionid'])) { + if (isset($this->other['coursesectionnumber'])) { + $sectionnumber = $this->other['coursesectionnumber']; + } else { + $sectionnumber = $this->other['coursesectionid']; + } + return array($this->courseid, 'course', 'view section', 'view.php?id=' . $this->courseid . '&section=' + . $sectionnumber, $sectionnumber); } return array($this->courseid, 'course', 'view', 'view.php?id=' . $this->courseid, $this->courseid); } diff --git a/lib/tests/events_test.php b/lib/tests/events_test.php index baaa9e2b538..23fa7cb0058 100644 --- a/lib/tests/events_test.php +++ b/lib/tests/events_test.php @@ -238,10 +238,10 @@ class core_events_testcase extends advanced_testcase { $this->assertEventContextNotUsed($event); // Now try with optional parameters. - $sectionid = 34; + $sectionnumber = 7; $eventparams = array(); $eventparams['context'] = $context; - $eventparams['other'] = array('coursesectionid' => $sectionid); + $eventparams['other'] = array('coursesectionnumber' => $sectionnumber); $event = \core\event\course_viewed::create($eventparams); // Trigger and capture the event. @@ -254,8 +254,8 @@ class core_events_testcase extends advanced_testcase { $this->assertInstanceOf('\core\event\course_viewed', $event); $this->assertEquals(context_course::instance($course->id), $event->get_context()); - $expected = array($course->id, 'course', 'view section', 'view.php?id=' . $course->id . '&sectionid=' - . $sectionid, $sectionid); + $expected = array($course->id, 'course', 'view section', 'view.php?id=' . $course->id . '&section=' + . $sectionnumber, $sectionnumber); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); diff --git a/lib/upgrade.txt b/lib/upgrade.txt index c1c222450c1..5b570a3128e 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -32,6 +32,7 @@ information provided here is intended especially for developers. additional string parameters. * User settings node and course node in navigation now support callbacks from admin tools. * grade_get_grades() optional parameteres $itemtype, $itemmodule, $iteminstance are now required. +* \core\event\course_viewed 'other' argument changes from coursesectionid to coursesectionnumber as it contains the section number. DEPRECATIONS: * completion_info->get_incomplete_criteria() is deprecated and will be removed in Moodle 3.0.