Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MDL-36908 Assignment: Additional fixes for preventing empty submissions

Conflicts:

	mod/assign/assignmentplugin.php
	mod/assign/locallib.php
	mod/assign/renderer.php
  • Loading branch information...
commit 46c678ab33416893292e46f2bdc541c1461f24e9 1 parent 96b9622
@damyon damyon authored
View
24 mod/assign/locallib.php
@@ -1048,21 +1048,22 @@ public function count_participants($currentgroup) {
/**
* Load a count of users submissions in the current module that require grading
* This means the submission modification time is more recent than the
- * grading modification time.
+ * grading modification time and the status is SUBMITTED.
*
* @return int number of matching submissions
*/
public function count_submissions_need_grading() {
global $DB;
- $params = array($this->get_course_module()->instance);
+ $params = array($this->get_course_module()->instance, ASSIGN_SUBMISSION_STATUS_SUBMITTED);
return $DB->count_records_sql("SELECT COUNT('x')
FROM {assign_submission} s
LEFT JOIN {assign_grades} g ON s.assignment = g.assignment AND s.userid = g.userid
WHERE s.assignment = ?
AND s.timemodified IS NOT NULL
- AND (s.timemodified > g.timemodified OR g.timemodified IS NULL)",
+ AND (s.timemodified > g.timemodified OR g.timemodified IS NULL)
+ AND s.status = ?",
$params);
}
@@ -1601,12 +1602,7 @@ private function get_user_submission($userid, $create) {
$submission->userid = $userid;
$submission->timecreated = time();
$submission->timemodified = $submission->timecreated;
-
- if ($this->get_instance()->submissiondrafts) {
- $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
- } else {
- $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
- }
+ $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
$sid = $DB->insert_record('assign_submission', $submission);
$submission->id = $sid;
return $submission;
@@ -2094,6 +2090,9 @@ public function view_student_summary($user, $showlinks) {
$showedit = has_capability('mod/assign:submit', $this->context) &&
$this->submissions_open() && ($this->is_any_submission_plugin_enabled()) && $showlinks;
$showsubmit = $submission && ($submission->status == ASSIGN_SUBMISSION_STATUS_DRAFT) && $showlinks;
+ if (!$this->get_instance()->submissiondrafts) {
+ $showsubmit = false;
+ }
$gradelocked = ($grade && $grade->locked) || $this->grading_disabled($user->id);
$o .= $this->output->render(new assign_submission_status($this->get_instance()->allowsubmissionsfromdate,
@@ -2847,13 +2846,18 @@ private function process_save_submission(&$mform, &$notices) {
}
if ($data = $mform->get_data()) {
$submission = $this->get_user_submission($USER->id, true); //create the submission if needed & its id
+ if ($this->get_instance()->submissiondrafts) {
+ $submission->status = ASSIGN_SUBMISSION_STATUS_DRAFT;
+ } else {
+ $submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
+ }
+
$grade = $this->get_user_grade($USER->id, false); // get the grade to check if it is locked
if ($grade && $grade->locked) {
print_error('submissionslocked', 'assign');
return true;
}
-
$allempty = true;
$pluginerror = false;
foreach ($this->submissionplugins as $plugin) {
View
6 mod/assign/renderer.php
@@ -452,7 +452,11 @@ public function render_assign_submission_status(assign_submission_status $status
$t->data[] = $row;
foreach ($status->submissionplugins as $plugin) {
- if ($plugin->is_enabled() && $plugin->is_visible() && !$plugin->is_empty($status->submission)) {
+ $pluginshowsummary = !$plugin->is_empty($status->submission) || !$plugin->allow_submissions();
+ if ($plugin->is_enabled() &&
+ $plugin->is_visible() &&
+ $pluginshowsummary) {
+
$row = new html_table_row();
$cell1 = new html_table_cell($plugin->get_name());
$pluginsubmission = new assign_submission_plugin_submission($plugin, $status->submission, assign_submission_plugin_submission::SUMMARY, $status->coursemoduleid, $status->returnaction, $status->returnparams);
View
5 mod/assign/submission/comments/locallib.php
@@ -78,12 +78,13 @@ public function view_summary(stdClass $submission, & $showviewlink) {
}
/**
- * Always return false because at a minimum there is the comments control
+ * Always return true because the submission comments are not part of the submission form.
+ *
* @param stdClass $submission
* @return bool
*/
public function is_empty(stdClass $submission) {
- return false;
+ return true;
}
/**
View
4 mod/assign/submission/onlinetext/locallib.php
@@ -376,7 +376,9 @@ public function delete_instance() {
* @return bool
*/
public function is_empty(stdClass $submission) {
- return $this->view($submission) == '';
+ $onlinetextsubmission = $this->get_onlinetext_submission($submission->id);
+
+ return empty($onlinetextsubmission->onlinetext);
}
/**
Please sign in to comment.
Something went wrong with that request. Please try again.