diff --git a/mod/assign/feedback/editpdf/classes/event/observer.php b/mod/assign/feedback/editpdf/classes/event/observer.php index 278a694d5da..894ee73bb0e 100644 --- a/mod/assign/feedback/editpdf/classes/event/observer.php +++ b/mod/assign/feedback/editpdf/classes/event/observer.php @@ -51,6 +51,14 @@ class observer { * @param \mod_assign\event\base $event The submission created/updated event. */ protected static function queue_conversion($event) { + $assign = $event->get_assign(); + $plugin = $assign->get_feedback_plugin_by_type('editpdf'); + + if (!$plugin->is_visible() || !$plugin->is_enabled()) { + // The plugin is not enabled on this assignment instance, so nothing should be queued. + return; + } + $data = [ 'submissionid' => $event->other['submissionid'], 'submissionattempt' => $event->other['submissionattempt'], diff --git a/mod/assign/feedback/editpdf/tests/feedback_test.php b/mod/assign/feedback/editpdf/tests/feedback_test.php index a777955e95b..e7bab2a021e 100644 --- a/mod/assign/feedback/editpdf/tests/feedback_test.php +++ b/mod/assign/feedback/editpdf/tests/feedback_test.php @@ -578,4 +578,33 @@ class feedback_test extends \advanced_testcase { $conversions = \core_files\conversion::get_conversions_for_file($sourcefile, 'pdf'); $this->assertCount(0, $conversions); } + + /** + * Tests that when the plugin is not enabled for an assignment it does not create conversion tasks. + * + * @covers \assignfeedback_editpdf\event\observer + */ + public function test_submission_not_enabled() { + $this->require_ghostscript(); + $this->resetAfterTest(); + cron_setup_user(); + + $course = $this->getDataGenerator()->create_course(); + $student = $this->getDataGenerator()->create_and_enrol($course, 'student'); + $assignopts = [ + 'assignsubmission_file_enabled' => 1, + 'assignsubmission_file_maxfiles' => 1, + 'assignfeedback_editpdf_enabled' => 0, + 'assignsubmission_file_maxsizebytes' => 1000000, + ]; + $assign = $this->create_instance($course, $assignopts); + + // Add the standard submission. + $this->add_file_submission($student, $assign); + + $task = \core\task\manager::get_next_adhoc_task(time()); + + // No task was created. + $this->assertNull($task); + } }