From 5ac7838e3c4d09669432fa0817bdccbf1d604043 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 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/locallib.php b/mod/assign/locallib.php index c2a9d0d6d0d..f250587a7cc 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -8847,10 +8847,15 @@ class assign { // 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 3018af95888..360fea23a63 100644 --- a/mod/assign/submission/file/locallib.php +++ b/mod/assign/submission/file/locallib.php @@ -252,6 +252,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 c2ed6d38ff4..e1ec5875d94 100644 --- a/mod/assign/submission/onlinetext/locallib.php +++ b/mod/assign/submission/onlinetext/locallib.php @@ -235,6 +235,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 b2fc9756857..fe50250c10d 100644 --- a/mod/assign/tests/events_test.php +++ b/mod/assign/tests/events_test.php @@ -1353,4 +1353,43 @@ class assign_events_testcase extends advanced_testcase { $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); + } + }