From db3008e2fac57f9dc48d62d2d057e5357e015be9 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/submission/file/locallib.php | 3 ++ mod/assign/submission/onlinetext/locallib.php | 3 ++ mod/assign/tests/events_test.php | 38 +++++++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/mod/assign/classes/event/base.php b/mod/assign/classes/event/base.php index bb7d06b3717..c0b5e2dd5c6 100644 --- a/mod/assign/classes/event/base.php +++ b/mod/assign/classes/event/base.php @@ -60,6 +60,9 @@ abstract class base extends \core\event\base { 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/submission/file/locallib.php b/mod/assign/submission/file/locallib.php index d7070f89967..7e8a49de286 100644 --- a/mod/assign/submission/file/locallib.php +++ b/mod/assign/submission/file/locallib.php @@ -254,6 +254,9 @@ class assign_submission_file extends assign_submission_plugin { 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 e5e8e1933cb..07432756117 100644 --- a/mod/assign/submission/onlinetext/locallib.php +++ b/mod/assign/submission/onlinetext/locallib.php @@ -232,6 +232,9 @@ class assign_submission_onlinetext extends assign_submission_plugin { 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 8dfd76885ce..35f305e8045 100644 --- a/mod/assign/tests/events_test.php +++ b/mod/assign/tests/events_test.php @@ -1323,4 +1323,42 @@ class assign_events_testcase extends advanced_testcase { $this->assertEquals(context_module::instance($cm->id), $event->get_context()); $this->assertEventContextNotUsed($event); } + + /** + * 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); + } }