From e65221c27bcc28c0e1f2ddfb1d4111e1b793942a Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Mon, 24 Mar 2014 19:32:22 -0700 Subject: [PATCH] MDL-41101 mod_assign: replaced 'view submit assignment form' add_to_log call with an event --- .../classes/event/submission_form_viewed.php | 86 +++++++++++++++++++ mod/assign/lang/en/assign.php | 1 + mod/assign/locallib.php | 11 ++- mod/assign/tests/events_test.php | 35 ++++++++ 4 files changed, 132 insertions(+), 1 deletion(-) create mode 100644 mod/assign/classes/event/submission_form_viewed.php diff --git a/mod/assign/classes/event/submission_form_viewed.php b/mod/assign/classes/event/submission_form_viewed.php new file mode 100644 index 00000000000..fad7509547b --- /dev/null +++ b/mod/assign/classes/event/submission_form_viewed.php @@ -0,0 +1,86 @@ +. + +/** + * The mod_assign submission form viewed event. + * + * @property-read array $other { + * Extra information about event. + * + * - int assignid: the id of the assignment. + * } + * + * @package mod_assign + * @since Moodle 2.7 + * @copyright 2014 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace mod_assign\event; + +defined('MOODLE_INTERNAL') || die(); + +class submission_form_viewed extends base { + + /** + * Init method. + */ + protected function init() { + $this->data['crud'] = 'r'; + $this->data['edulevel'] = self::LEVEL_OTHER; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventsubmissionformviewed', 'mod_assign'); + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + if ($this->userid != $this->relateduserid) { + return "The user with the id {$this->userid} viewed the submission form for the user with the id {$this->relateduserid} + for the assignment with the id {$this->other['assignid']}."; + } + + return "The user with the id {$this->userid} viewed their submission for the assignment with the id + {$this->other['assignid']}."; + } + + /** + * Custom validation. + * + * @throws \coding_exception + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + + if (!isset($this->other['assignid'])) { + throw new \coding_exception('The \'assignid\' must be set in other.'); + } + } +} diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index c86f4a7442c..819e0f3759d 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -151,6 +151,7 @@ $string['eventmarkerupdated'] = 'The allocated marker has been updated.'; $string['eventstatementaccepted'] = 'The user has accepted the statement of the submission.'; $string['eventsubmissioncreated'] = 'Submission created.'; $string['eventsubmissionduplicated'] = 'The user duplicated his submission.'; +$string['eventsubmissionformviewed'] = 'Submission form viewed.'; $string['eventsubmissiongraded'] = 'The submission has been graded.'; $string['eventsubmissionlocked'] = 'The submissions have been locked for a user.'; $string['eventsubmissionstatusupdated'] = 'The status of the submission has been updated.'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 19cd799ffbf..5e2e38ce05d 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3349,7 +3349,16 @@ class assign { $o .= $this->get_renderer()->render(new assign_form('editsubmissionform', $mform)); $o .= $this->view_footer(); - $this->add_to_log('view submit assignment form', $title); + + $event = \mod_assign\event\submission_form_viewed::create(array( + 'relateduserid' => $userid, + 'context' => $this->get_context(), + 'other' => array( + 'assignid' => $this->get_instance()->id + ) + )); + $event->set_legacy_logdata('view submit assignment form', $title); + $event->trigger(); return $o; } diff --git a/mod/assign/tests/events_test.php b/mod/assign/tests/events_test.php index 2a781a403d5..27790b6f354 100644 --- a/mod/assign/tests/events_test.php +++ b/mod/assign/tests/events_test.php @@ -641,4 +641,39 @@ class assign_events_testcase extends mod_assign_base_testcase { $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); } + + /** + * Test the submission_form_viewed event. + */ + public function test_submission_form_viewed() { + global $PAGE; + + $this->setUser($this->students[0]); + + $assign = $this->create_instance(); + + // We need to set the URL in order to view the submission form. + $PAGE->set_url('/a_url'); + + // Trigger and capture the event. + $sink = $this->redirectEvents(); + $assign->view('editsubmission'); + $events = $sink->get_events(); + $this->assertCount(1, $events); + $event = reset($events); + + // Check that the event contains the expected values. + $this->assertInstanceOf('\mod_assign\event\submission_form_viewed', $event); + $this->assertEquals($assign->get_context(), $event->get_context()); + $expected = array( + $assign->get_course()->id, + 'assign', + 'view submit assignment form', + 'view.php?id=' . $assign->get_course_module()->id, + get_string('editsubmission', 'assign'), + $assign->get_course_module()->id + ); + $this->assertEventLegacyLogData($expected, $event); + $this->assertEventContextNotUsed($event); + } } -- 2.43.0