diff --git a/mod/wiki/classes/event/page_version_restored.php b/mod/wiki/classes/event/page_version_restored.php new file mode 100644 index 00000000000..435e009c284 --- /dev/null +++ b/mod/wiki/classes/event/page_version_restored.php @@ -0,0 +1,96 @@ +. + +/** + * mod_wiki version restored 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 restored event. + * + * @package mod_wiki + * @copyright 2013 Rajesh Taneja + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class page_version_restored extends \core\event\base { + /** + * Init method. + * + * @return void + */ + protected function init() { + $this->data['crud'] = 'u'; + $this->data['level'] = self::LEVEL_PARTICIPATING; + $this->data['objecttable'] = 'wiki_versions'; + } + + /** + * Return localised event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventversionrestored', 'mod_wiki'); + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + return 'User with id ' . $this->userid . ' restored wiki version for page id ' . $this->other['pageid']; + } + + /** + * Return the legacy event log data. + * + * @return array + */ + protected function get_legacy_logdata() { + return(array($this->courseid, 'wiki', 'restore', + 'view.php?pageid=' . $this->other['pageid'], $this->other['pageid'], $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->other['pageid'], + 'versionid' => $this->objectid)); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + if (!isset($this->other['pageid'])) { + throw new \coding_exception('The pageid needs to be set in $other'); + } + } +} diff --git a/mod/wiki/lang/en/wiki.php b/mod/wiki/lang/en/wiki.php index ee39bfdcf52..38375866e2b 100644 --- a/mod/wiki/lang/en/wiki.php +++ b/mod/wiki/lang/en/wiki.php @@ -64,6 +64,7 @@ $string['editingpage'] = 'Editing this page \'{$a}\''; $string['editsection'] = 'edit'; $string['eventhistoryviewed'] = 'Wiki history viewed'; $string['eventpageviewed'] = 'Wiki page viewed'; +$string['eventversionrestored'] = 'Wiki version restored'; $string['files'] = 'Files'; $string['filenotuploadederror'] = 'File \'{$a}\' could not be uploaded correctly.'; $string['filtername'] = 'Wiki auto-linking'; diff --git a/mod/wiki/pagelib.php b/mod/wiki/pagelib.php index d4946a6c3f9..7309326cc60 100644 --- a/mod/wiki/pagelib.php +++ b/mod/wiki/pagelib.php @@ -2160,6 +2160,16 @@ class page_wiki_confirmrestore extends page_wiki_save { $version = wiki_get_version($this->version->id); if (wiki_restore_page($this->page, $version->content, $version->userid)) { + $event = \mod_wiki\event\page_version_restored::create( + array( + 'context' => $this->modcontext, + 'objectid' => $version->id, + 'other' => array( + 'pageid' => $this->page->id + ) + )); + $event->add_record_snapshot('wiki_versions', $version); + $event->trigger(); redirect($CFG->wwwroot . '/mod/wiki/view.php?pageid=' . $this->page->id, get_string('restoring', 'wiki', $version->version), 3); } else { print_error('restoreerror', 'wiki', $version->version); diff --git a/mod/wiki/restoreversion.php b/mod/wiki/restoreversion.php index d5ad02cbd70..21305b89651 100644 --- a/mod/wiki/restoreversion.php +++ b/mod/wiki/restoreversion.php @@ -75,7 +75,6 @@ if ($confirm) { $wikipage->set_versionid($versionid); } -add_to_log($course->id, "wiki", "restore", "view.php?pageid=".$pageid, $pageid, $cm->id); $wikipage->print_header(); $wikipage->print_content();