From 3e5e78a2c9b9209b4fae87bf9a1663d30095249a Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Fri, 29 Nov 2013 14:19:12 +0800 Subject: [PATCH] MDL-40058 mod_wiki: Replaced add_to_log for page diff view with event --- mod/wiki/classes/event/page_diff_viewed.php | 100 ++++++++++++++++++++ mod/wiki/diff.php | 14 ++- mod/wiki/lang/en/wiki.php | 1 + 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 mod/wiki/classes/event/page_diff_viewed.php diff --git a/mod/wiki/classes/event/page_diff_viewed.php b/mod/wiki/classes/event/page_diff_viewed.php new file mode 100644 index 00000000000..487ae03be2d --- /dev/null +++ b/mod/wiki/classes/event/page_diff_viewed.php @@ -0,0 +1,100 @@ +. + +/** + * mod_wiki diff 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 diff viewed event class. + * + * @package mod_wiki + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class page_diff_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('eventdiffviewed', 'mod_wiki'); + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + return 'User with id ' . $this->userid . ' viewed wiki diff for page id ' . $this->objectid; + } + + /** + * Return the legacy event log data. + * + * @return array + */ + protected function get_legacy_logdata() { + return(array($this->courseid, 'wiki', 'diff', 'diff.php?pageid=' . $this->objectid . '&comparewith=' . + $this->other['comparewith'] . '&compare=' . $this->other['compare'], $this->objectid, + $this->context->instanceid)); + } + + /** + * Get URL related to the action. + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url('/mod/wiki/diff.php', array( + 'pageid' => $this->objectid, + 'comparewith' => $this->other['comparewith'], + 'compare' => $this->other['compare'] + )); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + if (!isset($this->other['comparewith']) || !isset($this->other['compare'])) { + throw new \coding_exception('The comparewith and compare need to be set in $other'); + } + } +} diff --git a/mod/wiki/diff.php b/mod/wiki/diff.php index cdd354c0d67..70c6de3acb0 100644 --- a/mod/wiki/diff.php +++ b/mod/wiki/diff.php @@ -73,7 +73,19 @@ $wikipage = new page_wiki_diff($wiki, $subwiki, $cm); $wikipage->set_page($page); $wikipage->set_comparison($compare, $comparewith); -add_to_log($course->id, "wiki", "diff", "diff.php?pageid=".$pageid."&comparewith=".$comparewith."&compare=".$compare, $pageid, $cm->id); +$event = \mod_wiki\event\page_diff_viewed::create( + array( + 'context' => context_module::instance($cm->id), + 'objectid' => $pageid, + 'other' => array( + 'comparewith' => $comparewith, + 'compare' => $compare + ) + )); +$event->add_record_snapshot('wiki_pages', $page); +$event->add_record_snapshot('wiki', $wiki); +$event->add_record_snapshot('wiki_subwikis', $subwiki); +$event->trigger(); $wikipage->print_header(); diff --git a/mod/wiki/lang/en/wiki.php b/mod/wiki/lang/en/wiki.php index 67fabc55f17..1d965185606 100644 --- a/mod/wiki/lang/en/wiki.php +++ b/mod/wiki/lang/en/wiki.php @@ -62,6 +62,7 @@ $string['editing'] = 'Editing wiki page'; $string['editingcomment'] = 'Editing comment'; $string['editingpage'] = 'Editing this page \'{$a}\''; $string['editsection'] = 'edit'; +$string['eventdiffviewed'] = 'Wiki diff viewed'; $string['eventhistoryviewed'] = 'Wiki history viewed'; $string['eventpageviewed'] = 'Wiki page viewed'; $string['eventpageupdated'] = 'Wiki page updated';