MDL-52901 mod_assign: Check due dates in external save_submission
authorJuan Leyva <juanleyvadelgado@gmail.com>
Wed, 27 Jan 2016 10:10:24 +0000 (11:10 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 7 Mar 2016 23:12:29 +0000 (00:12 +0100)
mod/assign/externallib.php
mod/assign/tests/externallib_test.php

index 2c65d15..5c7d862 100644 (file)
@@ -1681,9 +1681,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) {
index 01c5d4d..63e9c36 100644 (file)
@@ -946,6 +946,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']);
     }
 
     /**