From 81f92c220bfdc444c599ad08db84caf70d8eaaca Mon Sep 17 00:00:00 2001 From: Mark Nelson Date: Thu, 27 Mar 2014 21:16:42 -0700 Subject: [PATCH] MDL-41101 mod_assign: replaced 'view batch set marker allocation' add_to_log call with an event --- .../batch_set_marker_allocation_viewed.php | 77 +++++++++++++++++++ mod/assign/lang/en/assign.php | 1 + mod/assign/locallib.php | 13 +++- mod/assign/tests/base_test.php | 22 ++++++ mod/assign/tests/events_test.php | 27 +++++++ 5 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 mod/assign/classes/event/batch_set_marker_allocation_viewed.php diff --git a/mod/assign/classes/event/batch_set_marker_allocation_viewed.php b/mod/assign/classes/event/batch_set_marker_allocation_viewed.php new file mode 100644 index 00000000000..92d988708d2 --- /dev/null +++ b/mod/assign/classes/event/batch_set_marker_allocation_viewed.php @@ -0,0 +1,77 @@ +. + +/** + * The mod_assign batch set marker allocation 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 batch_set_marker_allocation_viewed extends base { + + /** + * Init method. + */ + protected function init() { + $this->data['crud'] = 'r'; + $this->data['edulevel'] = self::LEVEL_TEACHING; + } + + /** + * Returns localised general event name. + * + * @return string + */ + public static function get_name() { + return get_string('eventbatchsetmarkerallocationviewed', 'mod_assign'); + } + + /** + * Returns description of what happened. + * + * @return string + */ + public function get_description() { + return "The user with the id {$this->userid} viewed the batch set marker allocation for the assignment with the id + {$this->other['assignid']}."; + } + + /** + * Custom validation. + * + * @throws \coding_exception + */ + protected function validate_data() { + parent::validate_data(); + + 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 d084a89da7d..f56cf1c5fdd 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -142,6 +142,7 @@ $string['editingstatus'] = 'Editing status'; $string['editaction'] = 'Actions...'; $string['eventallsubmissionsdownloaded'] = 'All the submissions are being downloaded.'; $string['eventassessablesubmitted'] = 'A submission has been submitted.'; +$string['eventbatchsetmarkerallocationviewed'] = 'Batch set marker allocation viewed'; $string['eventbatchsetworkflowstateviewed'] = 'Batch set workflow state viewed.'; $string['eventextensiongranted'] = 'An extension has been granted.'; $string['eventfeedbackviewed'] = 'Feedback viewed'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 92d6ca2663c..42b6b5e5c84 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -3603,7 +3603,7 @@ class assign { * @param moodleform $mform Set to a grading batch operations form * @return string - the page to view after processing these actions */ - private function view_batch_markingallocation($mform) { + public function view_batch_markingallocation($mform) { global $CFG, $DB; require_once($CFG->dirroot . '/mod/assign/batchsetallocatedmarkerform.php'); @@ -3654,7 +3654,16 @@ class assign { $o .= $this->get_renderer()->render(new assign_form('setworkflowstate', $mform)); $o .= $this->view_footer(); - $this->add_to_log('view batch set marker allocation', get_string('viewbatchmarkingallocation', 'assign')); + $logmessage = new lang_string('viewbatchmarkingallocation', 'assign'); + $event = \mod_assign\event\batch_set_marker_allocation_viewed::create(array( + 'context' => $this->get_context(), + 'other' => array( + 'assignid' => $this->get_instance()->id + ) + )); + $event->set_legacy_logdata('view batch set marker allocation', $logmessage); + $event->trigger(); + return $o; } diff --git a/mod/assign/tests/base_test.php b/mod/assign/tests/base_test.php index 76b557961e2..84adc01cf86 100644 --- a/mod/assign/tests/base_test.php +++ b/mod/assign/tests/base_test.php @@ -312,4 +312,26 @@ class testable_assign extends assign { return parent::view_batch_set_workflow_state($mform); } + + public function testable_view_batch_markingallocation() { + global $CFG; + + require_once($CFG->dirroot . '/mod/assign/batchsetallocatedmarkerform.php'); + + // Mock submit data. + $data = array(); + $data['selectedusers'] = '1'; + mod_assign_batch_set_allocatedmarker_form::mock_submit($data); + + // Set required variables in the form - not valid just allows us to continue. + $formparams = array(); + $formparams['users'] = array(1); + $formparams['usershtml'] = 1; + $formparams['cm'] = $this->get_course_module()->id; + $formparams['context'] = $this->get_context(); + $formparams['markers'] = 1; + $mform = new mod_assign_batch_set_allocatedmarker_form('', $formparams); + + return parent::view_batch_markingallocation($mform); + } } diff --git a/mod/assign/tests/events_test.php b/mod/assign/tests/events_test.php index 980615bb11f..e73cb8e4e98 100644 --- a/mod/assign/tests/events_test.php +++ b/mod/assign/tests/events_test.php @@ -880,4 +880,31 @@ class assign_events_testcase extends mod_assign_base_testcase { $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); } + + /** + * Test the batch_set_marker_allocation_viewed event. + */ + public function test_batch_set_marker_allocation_viewed() { + $assign = $this->create_instance(); + + // Trigger and capture the event. + $sink = $this->redirectEvents(); + $assign->testable_view_batch_markingallocation(); + $events = $sink->get_events(); + $event = reset($events); + + // Check that the event contains the expected values. + $this->assertInstanceOf('\mod_assign\event\batch_set_marker_allocation_viewed', $event); + $this->assertEquals($assign->get_context(), $event->get_context()); + $expected = array( + $assign->get_course()->id, + 'assign', + 'view batch set marker allocation', + 'view.php?id=' . $assign->get_course_module()->id, + get_string('viewbatchmarkingallocation', 'assign'), + $assign->get_course_module()->id + ); + $this->assertEventLegacyLogData($expected, $event); + $this->assertEventContextNotUsed($event); + } }