From 655cdde2dc06b9d33c28012fda2b25d3aaef7613 Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Tue, 6 May 2014 22:47:21 -0700 Subject: [PATCH] MDL-45445 events: added missing 'relateduserid' validation --- blog/tests/bloglib_test.php | 5 +++++ lib/classes/event/blog_association_created.php | 16 +++++++++++++--- lib/classes/event/blog_entry_created.php | 14 ++++++++++++++ lib/classes/event/blog_entry_deleted.php | 14 ++++++++++++++ lib/classes/event/blog_entry_updated.php | 14 ++++++++++++++ lib/classes/event/cohort_member_added.php | 14 ++++++++++++++ lib/classes/event/cohort_member_removed.php | 14 ++++++++++++++ lib/classes/event/course_completed.php | 10 +++++++++- lib/classes/event/email_failed.php | 4 ++++ lib/classes/event/group_member_added.php | 4 ++++ lib/classes/event/group_member_removed.php | 14 ++++++++++++++ lib/classes/event/note_created.php | 14 ++++++++++++++ lib/classes/event/note_deleted.php | 14 ++++++++++++++ lib/classes/event/note_updated.php | 14 ++++++++++++++ lib/classes/event/role_assigned.php | 14 ++++++++++++++ lib/classes/event/role_unassigned.php | 14 ++++++++++++++ lib/classes/event/user_graded.php | 14 ++++++++++++++ lib/classes/event/user_loggedinas.php | 14 ++++++++++++++ lib/classes/event/user_profile_viewed.php | 14 ++++++++++++++ mod/feedback/classes/event/response_deleted.php | 3 +++ .../classes/event/response_submitted.php | 3 +++ mod/feedback/tests/events_test.php | 6 +++++- .../classes/event/essay_attempt_viewed.php | 14 ++++++++++++++ mod/scorm/classes/event/interactions_viewed.php | 4 ++++ mod/scorm/classes/event/tracks_viewed.php | 3 +++ mod/scorm/classes/event/user_report_viewed.php | 4 ++++ .../classes/event/submission_assessed.php | 14 ++++++++++++++ .../classes/event/submission_reassessed.php | 14 ++++++++++++++ mod/workshop/classes/event/submission_viewed.php | 14 ++++++++++++++ .../classes/event/user_report_viewed.php | 4 ++++ 30 files changed, 313 insertions(+), 5 deletions(-) diff --git a/blog/tests/bloglib_test.php b/blog/tests/bloglib_test.php index cf1c1dec599..2db22652c11 100644 --- a/blog/tests/bloglib_test.php +++ b/blog/tests/bloglib_test.php @@ -326,6 +326,7 @@ class core_bloglib_testcase extends advanced_testcase { \core\event\blog_association_created::create(array( 'contextid' => 1, 'objectid' => 3, + 'relateduserid' => 2, 'other' => array('associateid' => 2 , 'blogid' => 3, 'subject' => 'blog subject'))); } catch (coding_exception $e) { $this->assertContains('The \'associatetype\' value must be set in other and be a valid type.', $e->getMessage()); @@ -334,6 +335,7 @@ class core_bloglib_testcase extends advanced_testcase { \core\event\blog_association_created::create(array( 'contextid' => 1, 'objectid' => 3, + 'relateduserid' => 2, 'other' => array('associateid' => 2 , 'blogid' => 3, 'associatetype' => 'random', 'subject' => 'blog subject'))); } catch (coding_exception $e) { $this->assertContains('The \'associatetype\' value must be set in other and be a valid type.', $e->getMessage()); @@ -343,6 +345,7 @@ class core_bloglib_testcase extends advanced_testcase { \core\event\blog_association_created::create(array( 'contextid' => 1, 'objectid' => 3, + 'relateduserid' => 2, 'other' => array('blogid' => 3, 'associatetype' => 'course', 'subject' => 'blog subject'))); } catch (coding_exception $e) { $this->assertContains('The \'associateid\' value must be set in other.', $e->getMessage()); @@ -352,6 +355,7 @@ class core_bloglib_testcase extends advanced_testcase { \core\event\blog_association_created::create(array( 'contextid' => 1, 'objectid' => 3, + 'relateduserid' => 2, 'other' => array('associateid' => 3, 'associatetype' => 'course', 'subject' => 'blog subject'))); } catch (coding_exception $e) { $this->assertContains('The \'blogid\' value must be set in other.', $e->getMessage()); @@ -361,6 +365,7 @@ class core_bloglib_testcase extends advanced_testcase { \core\event\blog_association_created::create(array( 'contextid' => 1, 'objectid' => 3, + 'relateduserid' => 2, 'other' => array('blogid' => 3, 'associateid' => 3, 'associatetype' => 'course'))); } catch (coding_exception $e) { $this->assertContains('The \'subject\' value must be set in other.', $e->getMessage()); diff --git a/lib/classes/event/blog_association_created.php b/lib/classes/event/blog_association_created.php index ba083cb8595..62ae7c9da98 100644 --- a/lib/classes/event/blog_association_created.php +++ b/lib/classes/event/blog_association_created.php @@ -104,14 +104,24 @@ class blog_association_created extends base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + if (empty($this->other['associatetype']) || ($this->other['associatetype'] !== 'course' && $this->other['associatetype'] !== 'coursemodule')) { throw new \coding_exception('The \'associatetype\' value must be set in other and be a valid type.'); - } else if (!isset($this->other['blogid'])) { + } + + if (!isset($this->other['blogid'])) { throw new \coding_exception('The \'blogid\' value must be set in other.'); - } else if (!isset($this->other['associateid'])) { + } + + if (!isset($this->other['associateid'])) { throw new \coding_exception('The \'associateid\' value must be set in other.'); - } else if (!isset($this->other['subject'])) { + } + + if (!isset($this->other['subject'])) { throw new \coding_exception('The \'subject\' value must be set in other.'); } } diff --git a/lib/classes/event/blog_entry_created.php b/lib/classes/event/blog_entry_created.php index 36acac51c67..1f39bed35b6 100644 --- a/lib/classes/event/blog_entry_created.php +++ b/lib/classes/event/blog_entry_created.php @@ -126,4 +126,18 @@ class blog_entry_created extends base { return array (SITEID, 'blog', 'add', 'index.php?userid=' . $this->relateduserid . '&entryid=' . $this->objectid, $this->blogentry->subject); } + + /** + * Custom validations. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/blog_entry_deleted.php b/lib/classes/event/blog_entry_deleted.php index c7c3a63c0b5..2321e42f51b 100644 --- a/lib/classes/event/blog_entry_deleted.php +++ b/lib/classes/event/blog_entry_deleted.php @@ -117,4 +117,18 @@ class blog_entry_deleted extends base { return array (SITEID, 'blog', 'delete', 'index.php?userid=' . $this->relateduserid, 'deleted blog entry with entry id# '. $this->objectid); } + + /** + * Custom validations. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/blog_entry_updated.php b/lib/classes/event/blog_entry_updated.php index 893e8301ce6..4b9237162e7 100644 --- a/lib/classes/event/blog_entry_updated.php +++ b/lib/classes/event/blog_entry_updated.php @@ -124,5 +124,19 @@ class blog_entry_updated extends base { return array(SITEID, 'blog', 'update', 'index.php?userid=' . $this->relateduserid . '&entryid=' . $this->objectid, $this->blogentry->subject); } + + /** + * Custom validations. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/cohort_member_added.php b/lib/classes/event/cohort_member_added.php index 6a944ea68f0..018d854ec1f 100644 --- a/lib/classes/event/cohort_member_added.php +++ b/lib/classes/event/cohort_member_added.php @@ -94,4 +94,18 @@ class cohort_member_added extends base { $data->userid = $this->relateduserid; return $data; } + + /** + * Custom validations. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/cohort_member_removed.php b/lib/classes/event/cohort_member_removed.php index 68b29e3ee2b..25c902adf30 100644 --- a/lib/classes/event/cohort_member_removed.php +++ b/lib/classes/event/cohort_member_removed.php @@ -95,4 +95,18 @@ class cohort_member_removed extends base { $data->userid = $this->relateduserid; return $data; } + + /** + * Custom validations. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/course_completed.php b/lib/classes/event/course_completed.php index cd4bbdc6e23..ed51fa97d3b 100644 --- a/lib/classes/event/course_completed.php +++ b/lib/classes/event/course_completed.php @@ -124,6 +124,14 @@ class course_completed extends base { protected function validate_data() { parent::validate_data(); - // TODO: MDL-45445 add validation of relateduserid and other['relateduserid']. + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + + // Check that the 'relateduserid' value is set in other as well. This is because we introduced this in 2.6 + // and some observers may be relying on this value to be present. + if (!isset($this->other['relateduserid'])) { + throw new \coding_exception('The \'relateduserid\' value must be set in other.'); + } } } diff --git a/lib/classes/event/email_failed.php b/lib/classes/event/email_failed.php index d62e2c79707..461f4581c93 100644 --- a/lib/classes/event/email_failed.php +++ b/lib/classes/event/email_failed.php @@ -80,6 +80,10 @@ class email_failed extends base { */ protected function validate_data() { parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } if (!isset($this->other['subject'])) { throw new \coding_exception('The \'subject\' value must be set in other.'); } diff --git a/lib/classes/event/group_member_added.php b/lib/classes/event/group_member_added.php index 2cb197f7a64..1da73bca3e2 100644 --- a/lib/classes/event/group_member_added.php +++ b/lib/classes/event/group_member_added.php @@ -113,6 +113,10 @@ class group_member_added extends base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + if (!isset($this->other['component'])) { throw new \coding_exception('The \'component\' value must be set in other, even if empty.'); } diff --git a/lib/classes/event/group_member_removed.php b/lib/classes/event/group_member_removed.php index 6fca12778a5..1acc7789fb5 100644 --- a/lib/classes/event/group_member_removed.php +++ b/lib/classes/event/group_member_removed.php @@ -94,4 +94,18 @@ class group_member_removed extends base { $this->data['edulevel'] = self::LEVEL_OTHER; $this->data['objecttable'] = 'groups'; } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/note_created.php b/lib/classes/event/note_created.php index 62ce5bd926f..dc303f46d6f 100644 --- a/lib/classes/event/note_created.php +++ b/lib/classes/event/note_created.php @@ -92,4 +92,18 @@ class note_created extends base { $logurl->set_anchor('note-' . $this->objectid); return array($this->courseid, 'notes', 'add', $logurl, 'add note'); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/note_deleted.php b/lib/classes/event/note_deleted.php index 8af710b89d5..6f446051f26 100644 --- a/lib/classes/event/note_deleted.php +++ b/lib/classes/event/note_deleted.php @@ -82,4 +82,18 @@ class note_deleted extends base { $logurl->set_anchor('note-' . $this->objectid); return array($this->courseid, 'notes', 'delete', $logurl, 'delete note'); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/note_updated.php b/lib/classes/event/note_updated.php index 43a0ed89370..08b4dcd7b10 100644 --- a/lib/classes/event/note_updated.php +++ b/lib/classes/event/note_updated.php @@ -92,4 +92,18 @@ class note_updated extends base { $logurl->set_anchor('note-' . $this->objectid); return array($this->courseid, 'notes', 'update', $logurl, 'update note'); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/role_assigned.php b/lib/classes/event/role_assigned.php index 4b86c8cf3f7..85c6051420a 100644 --- a/lib/classes/event/role_assigned.php +++ b/lib/classes/event/role_assigned.php @@ -109,4 +109,18 @@ class role_assigned extends base { return array($this->courseid, 'role', 'assign', 'admin/roles/assign.php?contextid='.$this->contextid.'&roleid='.$this->objectid, $rolenames[$this->objectid], '', $this->userid); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/role_unassigned.php b/lib/classes/event/role_unassigned.php index 31f00a02f6c..f0888be2483 100644 --- a/lib/classes/event/role_unassigned.php +++ b/lib/classes/event/role_unassigned.php @@ -106,4 +106,18 @@ class role_unassigned extends base { return array($this->courseid, 'role', 'unassign', 'admin/roles/assign.php?contextid='.$this->contextid.'&roleid='.$this->objectid, $rolenames[$this->objectid], '', $this->userid); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/user_graded.php b/lib/classes/event/user_graded.php index 157b90b4e0e..61c89803a24 100644 --- a/lib/classes/event/user_graded.php +++ b/lib/classes/event/user_graded.php @@ -138,4 +138,18 @@ class user_graded extends base { return array($this->courseid, 'grade', 'update', $url, $info); } + + /** + * Custom validation. + * + * @throws \coding_exception when validation does not pass. + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/user_loggedinas.php b/lib/classes/event/user_loggedinas.php index 2e6b4dd7d59..0e32b29aa07 100644 --- a/lib/classes/event/user_loggedinas.php +++ b/lib/classes/event/user_loggedinas.php @@ -90,4 +90,18 @@ class user_loggedinas extends base { public function get_url() { return new \moodle_url('/user/view.php', array('id' => $this->objectid)); } + + /** + * Custom validation. + * + * @throws \coding_exception when validation does not pass. + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/lib/classes/event/user_profile_viewed.php b/lib/classes/event/user_profile_viewed.php index d120303ce8b..277aa97cf85 100644 --- a/lib/classes/event/user_profile_viewed.php +++ b/lib/classes/event/user_profile_viewed.php @@ -97,4 +97,18 @@ class user_profile_viewed extends base { } return null; } + + /** + * Custom validation. + * + * @throws \coding_exception when validation does not pass. + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/mod/feedback/classes/event/response_deleted.php b/mod/feedback/classes/event/response_deleted.php index 4ab2d006e12..b0e3cca3a52 100644 --- a/mod/feedback/classes/event/response_deleted.php +++ b/mod/feedback/classes/event/response_deleted.php @@ -113,6 +113,9 @@ class response_deleted extends \core\event\base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } if (!isset($this->other['anonymous'])) { throw new \coding_exception('The \'anonymous\' value must be set in other.'); } diff --git a/mod/feedback/classes/event/response_submitted.php b/mod/feedback/classes/event/response_submitted.php index 2a9a632004e..9d1b36406d5 100644 --- a/mod/feedback/classes/event/response_submitted.php +++ b/mod/feedback/classes/event/response_submitted.php @@ -135,6 +135,9 @@ class response_submitted extends \core\event\base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } if (!isset($this->other['anonymous'])) { throw new \coding_exception('The \'anonymous\' value must be set in other.'); } diff --git a/mod/feedback/tests/events_test.php b/mod/feedback/tests/events_test.php index 300c2311188..84133882ef9 100644 --- a/mod/feedback/tests/events_test.php +++ b/mod/feedback/tests/events_test.php @@ -184,7 +184,8 @@ class mod_feedback_events_testcase extends advanced_testcase { try { \mod_feedback\event\response_submitted::create(array( 'context' => $context, - 'objectid' => $this->eventfeedbackcompleted->id + 'objectid' => $this->eventfeedbackcompleted->id, + 'relateduserid' => 2, )); $this->fail("Event validation should not allow \\mod_feedback\\event\\response_deleted to be triggered without other['anonymous']"); @@ -289,6 +290,7 @@ class mod_feedback_events_testcase extends advanced_testcase { \mod_feedback\event\response_submitted::create(array( 'context' => $context, 'objectid' => $this->eventfeedbackcompleted->id, + 'relateduserid' => 2, 'anonymous' => 0, 'other' => array('cmid' => $this->eventcm->id, 'anonymous' => 2) )); @@ -303,6 +305,7 @@ class mod_feedback_events_testcase extends advanced_testcase { \mod_feedback\event\response_submitted::create(array( 'context' => $context, 'objectid' => $this->eventfeedbackcompleted->id, + 'relateduserid' => 2, 'anonymous' => 0, 'other' => array('instanceid' => $this->eventfeedback->id, 'anonymous' => 2) )); @@ -317,6 +320,7 @@ class mod_feedback_events_testcase extends advanced_testcase { \mod_feedback\event\response_submitted::create(array( 'context' => $context, 'objectid' => $this->eventfeedbackcompleted->id, + 'relateduserid' => 2, 'other' => array('cmid' => $this->eventcm->id, 'instanceid' => $this->eventfeedback->id) )); $this->fail("Event validation should not allow \\mod_feedback\\event\\response_deleted to be triggered without diff --git a/mod/lesson/classes/event/essay_attempt_viewed.php b/mod/lesson/classes/event/essay_attempt_viewed.php index 86e65140d21..8a46108fe59 100644 --- a/mod/lesson/classes/event/essay_attempt_viewed.php +++ b/mod/lesson/classes/event/essay_attempt_viewed.php @@ -83,4 +83,18 @@ class essay_attempt_viewed extends \core\event\base { return array($this->courseid, 'lesson', 'view grade', 'essay.php?id=' . $this->contextinstanceid . '&mode=grade&attemptid=' . $this->objectid, get_string('manualgrading', 'lesson'), $this->contextinstanceid); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/mod/scorm/classes/event/interactions_viewed.php b/mod/scorm/classes/event/interactions_viewed.php index 230f8e671ad..e0358fdf51b 100644 --- a/mod/scorm/classes/event/interactions_viewed.php +++ b/mod/scorm/classes/event/interactions_viewed.php @@ -103,6 +103,10 @@ class interactions_viewed extends \core\event\base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + if (empty($this->other['attemptid'])) { throw new \coding_exception('The \'attemptid\' must be set in other.'); } diff --git a/mod/scorm/classes/event/tracks_viewed.php b/mod/scorm/classes/event/tracks_viewed.php index f652a7b8b04..ede1b47d126 100644 --- a/mod/scorm/classes/event/tracks_viewed.php +++ b/mod/scorm/classes/event/tracks_viewed.php @@ -105,6 +105,9 @@ class tracks_viewed extends \core\event\base { protected function validate_data() { parent::validate_data(); + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } if (empty($this->other['attemptid'])) { throw new \coding_exception('The \'attemptid\' value must be set in other.'); } diff --git a/mod/scorm/classes/event/user_report_viewed.php b/mod/scorm/classes/event/user_report_viewed.php index 9fece2d77e4..b91ad5582b1 100644 --- a/mod/scorm/classes/event/user_report_viewed.php +++ b/mod/scorm/classes/event/user_report_viewed.php @@ -101,6 +101,10 @@ class user_report_viewed extends \core\event\base { */ protected function validate_data() { parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } if (empty($this->other['attemptid'])) { throw new \coding_exception('The \'attemptid\' value must be set in other.'); } diff --git a/mod/workshop/classes/event/submission_assessed.php b/mod/workshop/classes/event/submission_assessed.php index 95cb4ffef58..bc872660e6c 100644 --- a/mod/workshop/classes/event/submission_assessed.php +++ b/mod/workshop/classes/event/submission_assessed.php @@ -90,4 +90,18 @@ class submission_assessed extends \core\event\base { public function get_url() { return new \moodle_url('/mod/workshop/assessment.php', array('asid' => $this->objectid)); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/mod/workshop/classes/event/submission_reassessed.php b/mod/workshop/classes/event/submission_reassessed.php index 21ec64576f4..f59e3caa7b2 100644 --- a/mod/workshop/classes/event/submission_reassessed.php +++ b/mod/workshop/classes/event/submission_reassessed.php @@ -91,4 +91,18 @@ class submission_reassessed extends \core\event\base { public function get_url() { return new \moodle_url('/mod/workshop/assessment.php?', array('asid' => $this->objectid)); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/mod/workshop/classes/event/submission_viewed.php b/mod/workshop/classes/event/submission_viewed.php index 1a1a9ca42d9..9bf80941ed8 100644 --- a/mod/workshop/classes/event/submission_viewed.php +++ b/mod/workshop/classes/event/submission_viewed.php @@ -88,4 +88,18 @@ class submission_viewed extends \core\event\base { 'submission.php?cmid=' . $this->contextinstanceid . '&id=' . $this->objectid, $this->objectid, $this->contextinstanceid); } + + /** + * Custom validation. + * + * @throws \coding_exception + * @return void + */ + protected function validate_data() { + parent::validate_data(); + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } + } } diff --git a/report/completion/classes/event/user_report_viewed.php b/report/completion/classes/event/user_report_viewed.php index ca046c59e6c..f8193a85096 100644 --- a/report/completion/classes/event/user_report_viewed.php +++ b/report/completion/classes/event/user_report_viewed.php @@ -94,5 +94,9 @@ class user_report_viewed extends \core\event\base { if ($this->contextlevel != CONTEXT_COURSE) { throw new \coding_exception('Context level must be CONTEXT_COURSE.'); } + + if (!isset($this->relateduserid)) { + throw new \coding_exception('The \'relateduserid\' must be set.'); + } } }