From 7f702f2ea2c00fe3a7877a8ad3f5dbed85273aa8 Mon Sep 17 00:00:00 2001 From: Jason Platts Date: Mon, 11 May 2015 11:18:22 +0100 Subject: [PATCH] Collab: Add logging when user gets session problem on saving #17782 --- classes/event/save_failed.php | 105 ++++++++++++++++++++++++++++++++++ confirmloggedin.php | 16 ++++++ lang/en/ouwiki.php | 1 + version.php | 2 +- 4 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 classes/event/save_failed.php diff --git a/classes/event/save_failed.php b/classes/event/save_failed.php new file mode 100644 index 0000000..7b094d6 --- /dev/null +++ b/classes/event/save_failed.php @@ -0,0 +1,105 @@ +. + +/** + * + * @package mod_ouwiki + * @copyright 2015 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_ouwiki\event; + +defined('MOODLE_INTERNAL') || die(); + +/** + * The mod_ouwiki page saving failed event class. + * + * @package mod_ouwiki + * @since Moodle 2.7 + * @copyright 2015 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class save_failed extends \core\event\base { + + /** + * Init method. + * + * @return void + */ + protected function init() { + $this->data['crud'] = 'u'; + $this->data['edulevel'] = self::LEVEL_OTHER; + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + $string = 'OUwiki page edit failed due to session error.'; + if (!empty($this->other['pid'])) { + $string .= " Wiki cm id '{$this->other['pid']}'."; + } + return $string; + } + + /** + * Return localised event name. + * + * @return string + */ + public static function get_name() { + return get_string('event:savefailed', 'mod_ouwiki'); + } + + /** + * Get URL related to the action + * + * @return \moodle_url + */ + public function get_url() { + return new \moodle_url($this->other['page']); + } + + /** + * Return the legacy event log data. + * + * @return array|null + */ + protected function get_legacy_logdata() { + global $SITE; + $url = str_replace('/mod/ouwiki/', '', $this->other['page']); + return array($SITE->id, 'ouwiki', 'error editpage', $this->other['page'], 'session error', + $this->contextinstanceid); + } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->other['page'])) { + throw new \coding_exception('The \'page\' value must be set in other.'); + } + } + +} diff --git a/confirmloggedin.php b/confirmloggedin.php index 8b459fd..4987ca8 100644 --- a/confirmloggedin.php +++ b/confirmloggedin.php @@ -34,6 +34,22 @@ require_login(null, true); require_sesskey(); } catch (moodle_exception $e) { + $pid = 0; + $url = '/mod/ouwiki/edit.php'; + if (!empty($_SERVER['HTTP_REFERER'])) { + $url = new moodle_url($_SERVER['HTTP_REFERER']); + $rpid = $url->get_param('id'); + if (!empty($rpid)) { + $pid = $rpid; + } + $url = $url->out_as_local_url(); + } + $params = array( + 'context' => context_system::instance(), + 'other' => array('page' => $url, 'pid' => $pid) + ); + $event = \mod_ouwiki\event\save_failed::create($params); + $event->trigger(); exit; } diff --git a/lang/en/ouwiki.php b/lang/en/ouwiki.php index 86c1350..3e4c2ce 100644 --- a/lang/en/ouwiki.php +++ b/lang/en/ouwiki.php @@ -582,4 +582,5 @@ $string['event:ouwikidelete'] = 'ouwiki version delete'; $string['event:ouwikipagecreated'] = 'ouwiki page created'; $string['event:ouwikipageupdated'] = 'ouwiki page updated'; +$string['event:savefailed'] = 'Session fail on page save'; $string['ouwikicrontask'] = 'OU wiki maintenance jobs'; diff --git a/version.php b/version.php index a8fc4ec..48d6dbc 100644 --- a/version.php +++ b/version.php @@ -22,7 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -$plugin->version = 2014120300; +$plugin->version = 2015051100; $plugin->requires = 2014051200; $plugin->component = 'mod_ouwiki'; $plugin->maturity = MATURITY_STABLE;