diff --git a/mod/wiki/classes/event/page_version_viewed.php b/mod/wiki/classes/event/page_version_viewed.php new file mode 100644 index 00000000000..8239c43f1d9 --- /dev/null +++ b/mod/wiki/classes/event/page_version_viewed.php @@ -0,0 +1,98 @@ +. + +/** + * mod_wiki version viewed event. + * + * @package mod_wiki + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_wiki\event; +defined('MOODLE_INTERNAL') || die(); + +/** + * mod_wiki version viewed event. + * + * @package mod_wiki + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class page_version_viewed extends \core\event\base { + /** + * Init method. + * + * @return void + */ + protected function init() { + $this->data['crud'] = 'r'; + $this->data['level'] = self::LEVEL_PARTICIPATING; + $this->data['objecttable'] = 'wiki_pages'; + } + + /** + * Return localised event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventversionviewed', 'mod_wiki'); + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + return 'User with id ' . $this->userid . ' viewed versionid ' . $this->other['versionid'] . + ' for page id ' . $this->objectid; + } + + /** + * Return the legacy event log data. + * + * @return array + */ + protected function get_legacy_logdata() { + return(array($this->courseid, 'wiki', 'history', + 'viewversion.php?pageid=' . $this->objectid . '&versionid=' . $this->other['versionid'], + $this->objectid, $this->context->instanceid)); + } + + /** + * Get URL related to the action. + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url('/mod/wiki/viewversion.php', array('pageid' => $this->objectid, + 'versionid' => $this->other['versionid'])); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + if (!isset($this->other['versionid'])) { + throw new \coding_exception('The versionid need to be set in $other'); + } + } +} diff --git a/mod/wiki/lang/en/wiki.php b/mod/wiki/lang/en/wiki.php index 2cdfb2812e9..c4407de94b9 100644 --- a/mod/wiki/lang/en/wiki.php +++ b/mod/wiki/lang/en/wiki.php @@ -72,6 +72,7 @@ $string['eventpageviewed'] = 'Wiki page viewed'; $string['eventpageupdated'] = 'Wiki page updated'; $string['eventpageversiondeleted'] = 'Wiki page version deleted'; $string['eventversionrestored'] = 'Wiki version restored'; +$string['eventversionviewed'] = 'Wiki page version viewed'; $string['files'] = 'Files'; $string['filenotuploadederror'] = 'File \'{$a}\' could not be uploaded correctly.'; $string['filtername'] = 'Wiki auto-linking'; diff --git a/mod/wiki/viewversion.php b/mod/wiki/viewversion.php index ecdd6504bcc..bc2af3887cb 100644 --- a/mod/wiki/viewversion.php +++ b/mod/wiki/viewversion.php @@ -65,7 +65,18 @@ $wikipage = new page_wiki_viewversion($wiki, $subwiki, $cm); $wikipage->set_page($page); $wikipage->set_versionid($versionid); -add_to_log($course->id, "wiki", "history", "viewversion.php?pageid=".$pageid."&versionid=".$versionid, $pageid, $cm->id); +$event = \mod_wiki\event\page_version_viewed::create( + array( + 'context' => context_module::instance($cm->id), + 'objectid' => $pageid, + 'other' => array( + 'versionid' => $versionid + ) + )); +$event->add_record_snapshot('wiki_pages', $page); +$event->add_record_snapshot('wiki', $wiki); +$event->add_record_snapshot('wiki_subwikis', $subwiki); +$event->trigger(); // Print the page header $wikipage->print_header();