/**
  * Test the report viewed event.
  *
  * It's not possible to use the moodle API to simulate the viewing of log report, so here we
  * simply create the event and trigger it.
  */
 public function test_report_viewed()
 {
     $course = $this->getDataGenerator()->create_course();
     $context = context_course::instance($course->id);
     // Trigger event for log report viewed.
     $event = \report_courselog\event\report_viewed::create(array('context' => $context, 'relateduserid' => 0, 'other' => array('groupid' => 0, 'date' => 0, 'modid' => 0, 'modaction' => '', 'logformat' => 'showashtml')));
     // Trigger and capture the event.
     $sink = $this->redirectEvents();
     $event->trigger();
     $events = $sink->get_events();
     $event = reset($events);
     $this->assertInstanceOf('\\report_courselog\\event\\report_viewed', $event);
     $this->assertEquals($context, $event->get_context());
     $expected = array($course->id, "course", "report log", "report/log/index.php?id={$course->id}", $course->id);
     $this->assertEventLegacyLogData($expected, $event);
     $this->assertEventContextNotUsed($event);
     $url = new moodle_url('/report/courselog/index.php', array('id' => $event->courseid));
     $this->assertEquals($url, $event->get_url());
 }
// Get course details.
$course = null;
if ($id) {
    $course = $DB->get_record('course', array('id' => $id), '*', MUST_EXIST);
    require_login($course);
    $context = context_course::instance($course->id);
} else {
    require_login();
    $context = context_system::instance();
    $PAGE->set_context($context);
}
require_capability('report/log:view', $context);
// When user choose to view logs then only trigger event.
if ($chooselog) {
    // Trigger a report viewed event.
    $event = \report_courselog\event\report_viewed::create(array('context' => $context, 'relateduserid' => $user, 'other' => array('groupid' => $group, 'date' => $date, 'modid' => $modid, 'modaction' => $modaction, 'logformat' => $logformat)));
    $event->trigger();
}
if (!empty($page)) {
    $strlogs = get_string('logs') . ": " . get_string('page', 'report_courselog', $page + 1);
} else {
    $strlogs = get_string('logs');
}
$stradministration = get_string('administration');
$strreports = get_string('reports');
// Before we close session, make sure we have editing information in session.
$adminediting = optional_param('adminedit', -1, PARAM_BOOL);
if ($PAGE->user_allowed_editing() && $adminediting != -1) {
    $USER->editing = $adminediting;
}
if (empty($course) || $course->id == $SITE->id) {