/** * Notify that a glossary entry was viewed. * * This will trigger relevant events. * * @param stdClass $entry The entry object. * @param stdClass $context The context object. * @since Moodle 3.1 */ function glossary_entry_view($entry, $context) { // Trigger the entry viewed event. $event = \mod_glossary\event\entry_viewed::create(array('objectid' => $entry->id, 'context' => $context)); $event->add_record_snapshot('glossary_entries', $entry); $event->trigger(); }
public function test_entry_viewed() { // There is no proper API to call to trigger this event, so what we are // doing here is simply making sure that the events returns the right information. $this->setAdminUser(); $course = $this->getDataGenerator()->create_course(); $glossary = $this->getDataGenerator()->create_module('glossary', array('course' => $course)); $context = context_module::instance($glossary->cmid); $glossarygenerator = $this->getDataGenerator()->get_plugin_generator('mod_glossary'); $entry = $glossarygenerator->create_content($glossary); $event = \mod_glossary\event\entry_viewed::create(array('objectid' => $entry->id, 'context' => $context)); $sink = $this->redirectEvents(); $event->trigger(); $events = $sink->get_events(); $this->assertCount(1, $events); $event = reset($events); // Checking that the event contains the expected values. $this->assertInstanceOf('\\mod_glossary\\event\\entry_viewed', $event); $this->assertEquals(CONTEXT_MODULE, $event->contextlevel); $this->assertEquals($glossary->cmid, $event->contextinstanceid); $expected = array($course->id, "glossary", "view entry", "showentry.php?eid={$entry->id}", $entry->id, $glossary->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); }
$modinfo = get_fast_modinfo($entrycourse); // make sure the entry is visible if (empty($modinfo->cms[$entry->cmid]->uservisible)) { unset($entries[$key]); continue; } // make sure the entry is approved (or approvable by current user) if (!$entry->approved and $USER->id != $entry->userid) { $context = context_module::instance($entry->cmid); if (!has_capability('mod/glossary:approve', $context)) { unset($entries[$key]); continue; } } $entries[$key]->footer = "<p style=\"text-align:right\">» <a href=\"{$CFG->wwwroot}/mod/glossary/view.php?g={$entry->glossaryid}\">" . format_string($entry->glossaryname, true) . "</a></p>"; $event = \mod_glossary\event\entry_viewed::create(array('objectid' => $entry->id, 'context' => $modinfo->cms[$entry->cmid]->context)); $event->add_record_snapshot('glossary_entries', $entry); $event->trigger(); } } if (!empty($courseid)) { $strglossaries = get_string('modulenameplural', 'glossary'); $strsearch = get_string('search'); $PAGE->navbar->add($strglossaries); $PAGE->navbar->add($strsearch); $PAGE->set_title(strip_tags("{$course->shortname}: {$strglossaries} {$strsearch}")); $PAGE->set_heading($course->fullname); echo $OUTPUT->header(); } else { echo $OUTPUT->header(); // Needs to be something here to allow linking back to the whole glossary