$PAGE->set_pagelayout('incourse'); $PAGE->set_heading($coursename); $eventotherparams = array('badgetype' => BADGE_TYPE_COURSE, 'courseid' => $course->id); } require_capability('moodle/badges:viewbadges', $PAGE->context); $PAGE->set_title($title); $output = $PAGE->get_renderer('core', 'badges'); echo $output->header(); echo $OUTPUT->heading($title); $totalcount = count(badges_get_badges($type, $courseid, '', '', 0, 0, $USER->id)); $records = badges_get_badges($type, $courseid, $sortby, $sorthow, $page, BADGE_PERPAGE, $USER->id); if ($totalcount) { echo $output->heading(get_string('badgestoearn', 'badges', $totalcount), 4); if ($course && $course->startdate > time()) { echo $OUTPUT->box(get_string('error:notifycoursedate', 'badges'), 'generalbox notifyproblem'); } $badges = new badge_collection($records); $badges->sort = $sortby; $badges->dir = $sorthow; $badges->page = $page; $badges->perpage = BADGE_PERPAGE; $badges->totalcount = $totalcount; echo $output->render($badges); } else { echo $output->notification(get_string('nobadges', 'badges')); } // Trigger event, badge listing viewed. $eventparams = array('context' => $PAGE->context, 'other' => $eventotherparams); $event = \core\event\badge_listing_viewed::create($eventparams); $event->trigger(); echo $output->footer();
/** * Test the badge listing viewed event. * * There is no external API for viewing a badge, so the unit test will simply * create and trigger the event and ensure data is returned as expected. */ public function test_badge_listing_viewed() { // Trigger an event: badge listing viewed. $context = context_system::instance(); $eventparams = array('context' => $context, 'other' => array('badgetype' => BADGE_TYPE_SITE)); $event = \core\event\badge_listing_viewed::create($eventparams); // Trigger and capture the event. $sink = $this->redirectEvents(); $event->trigger(); $events = $sink->get_events(); $event = reset($events); // Check that the event data is valid. $this->assertInstanceOf('\\core\\event\\badge_listing_viewed', $event); $this->assertEquals(BADGE_TYPE_SITE, $event->other['badgetype']); $this->assertDebuggingNotCalled(); $sink->close(); }