From 11106f6cee220119fcdcd101850741de7141399c Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 27 Jan 2016 11:10:24 +0100 Subject: [PATCH] MDL-52901 mod_assign: Check due dates in external save_submission --- mod/assign/externallib.php | 9 ++++++--- mod/assign/tests/externallib_test.php | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/mod/assign/externallib.php b/mod/assign/externallib.php index 2d06fef1dcd..6f0e4ee5c38 100644 --- a/mod/assign/externallib.php +++ b/mod/assign/externallib.php @@ -1634,9 +1634,12 @@ class mod_assign_external extends external_api { $notices = array(); - $submissiondata = (object)$params['plugindata']; - - $assignment->save_submission($submissiondata, $notices); + if (!$assignment->submissions_open($USER->id)) { + $notices[] = get_string('duedatereached', 'assign'); + } else { + $submissiondata = (object)$params['plugindata']; + $assignment->save_submission($submissiondata, $notices); + } $warnings = array(); foreach ($notices as $notice) { diff --git a/mod/assign/tests/externallib_test.php b/mod/assign/tests/externallib_test.php index 97236bbc67c..ae96c495cdc 100644 --- a/mod/assign/tests/externallib_test.php +++ b/mod/assign/tests/externallib_test.php @@ -903,6 +903,16 @@ class mod_assign_external_testcase extends externallib_advanced_testcase { $this->assertEquals(0, count($result)); + // Set up a due and cutoff passed date. + $instance->duedate = time() - WEEKSECS; + $instance->cutoffdate = time() - WEEKSECS; + $DB->update_record('assign', $instance); + + $result = mod_assign_external::save_submission($instance->id, $submissionpluginparams); + $result = external_api::clean_returnvalue(mod_assign_external::save_submission_returns(), $result); + + $this->assertCount(1, $result); + $this->assertEquals(get_string('duedatereached', 'assign'), $result[0]['item']); } /**