From 3926512713d0ca01431716943b6c800e598e1148 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 17 Apr 2014 14:16:25 +0800 Subject: [PATCH] MDL-45151 assign: Add anonymous flag to events if blindmarking --- mod/assign/classes/event/base.php | 3 ++ mod/assign/locallib.php | 13 +++++-- mod/assign/submission/file/locallib.php | 3 ++ mod/assign/submission/onlinetext/locallib.php | 3 ++ mod/assign/tests/events_test.php | 39 +++++++++++++++++++ 5 files changed, 57 insertions(+), 4 deletions(-) diff --git a/mod/assign/classes/event/base.php b/mod/assign/classes/event/base.php index bb7d06b3717ea..c0b5e2dd5c618 100644 --- a/mod/assign/classes/event/base.php +++ b/mod/assign/classes/event/base.php @@ -60,6 +60,9 @@ public function set_assign(\assign $assign) { if ($assign->get_context()->id != $this->get_context()->id) { throw new \coding_exception('Invalid assign isntance supplied!'); } + if ($assign->is_blind_marking()) { + $this->data['anonymous'] = 1; + } $this->assign = $assign; } diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 52ee11211932b..61fa2f253a8df 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -8764,10 +8764,15 @@ public function set_module_viewed() { // Trigger the course module viewed event. $assigninstance = $this->get_instance(); - $event = \mod_assign\event\course_module_viewed::create(array( - 'objectid' => $assigninstance->id, - 'context' => $this->get_context() - )); + $params = [ + 'objectid' => $assigninstance->id, + 'context' => $this->get_context() + ]; + if ($this->is_blind_marking()) { + $params['anonymous'] = 1; + } + + $event = \mod_assign\event\course_module_viewed::create($params); $event->add_record_snapshot('assign', $assigninstance); $event->trigger(); diff --git a/mod/assign/submission/file/locallib.php b/mod/assign/submission/file/locallib.php index b254f3dded5d3..adce3734756a6 100644 --- a/mod/assign/submission/file/locallib.php +++ b/mod/assign/submission/file/locallib.php @@ -252,6 +252,9 @@ public function save(stdClass $submission, stdClass $data) { if (!empty($submission->userid) && ($submission->userid != $USER->id)) { $params['relateduserid'] = $submission->userid; } + if ($this->assignment->is_blind_marking()) { + $params['anonymous'] = 1; + } $event = \assignsubmission_file\event\assessable_uploaded::create($params); $event->set_legacy_files($files); $event->trigger(); diff --git a/mod/assign/submission/onlinetext/locallib.php b/mod/assign/submission/onlinetext/locallib.php index 46cd8b5f48d34..dc381ef537be2 100644 --- a/mod/assign/submission/onlinetext/locallib.php +++ b/mod/assign/submission/onlinetext/locallib.php @@ -232,6 +232,9 @@ public function save(stdClass $submission, stdClass $data) { if (!empty($submission->userid) && ($submission->userid != $USER->id)) { $params['relateduserid'] = $submission->userid; } + if ($this->assignment->is_blind_marking()) { + $params['anonymous'] = 1; + } $event = \assignsubmission_onlinetext\event\assessable_uploaded::create($params); $event->trigger(); diff --git a/mod/assign/tests/events_test.php b/mod/assign/tests/events_test.php index b2fc9756857fc..fe50250c10d82 100644 --- a/mod/assign/tests/events_test.php +++ b/mod/assign/tests/events_test.php @@ -1353,4 +1353,43 @@ public function test_course_module_viewed() { $this->assertInstanceOf('\mod_assign\event\course_module_viewed', $event); $this->assertEquals($context, $event->get_context()); } + + /** + * Test that all events generated with blindmarking enabled are anonymous + */ + public function test_anonymous_events() { + $this->resetAfterTest(); + + $course = $this->getDataGenerator()->create_course(); + $teacher = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher'); + $student1 = $this->getDataGenerator()->create_and_enrol($course, 'student'); + $student2 = $this->getDataGenerator()->create_and_enrol($course, 'student'); + + $generator = $this->getDataGenerator()->get_plugin_generator('mod_assign'); + $instance = $generator->create_instance(array('course' => $course->id, 'blindmarking' => 1)); + + $cm = get_coursemodule_from_instance('assign', $instance->id, $course->id); + $context = context_module::instance($cm->id); + $assign = new assign($context, $cm, $course); + + $this->setUser($teacher); + $sink = $this->redirectEvents(); + + $assign->lock_submission($student1->id); + + $events = $sink->get_events(); + $event = reset($events); + + $this->assertTrue((bool)$event->anonymous); + + $assign->reveal_identities(); + $sink = $this->redirectEvents(); + $assign->lock_submission($student2->id); + + $events = $sink->get_events(); + $event = reset($events); + + $this->assertFalse((bool)$event->anonymous); + } + }