diff --git a/mod/assign/lib.php b/mod/assign/lib.php index 29370af3442..24643bd50b4 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -754,10 +754,14 @@ function assign_get_grade_details_for_print_overview(&$unmarkedsubmissions, $sql s.userid = g.userid AND s.assignment = g.assignment AND g.attemptnumber = s.attemptnumber + LEFT JOIN {assign} a ON + a.id = s.assignment WHERE ( g.timemodified is NULL OR s.timemodified >= g.timemodified OR - g.grade IS NULL ) AND + g.grade IS NULL OR + (g.grade = -1 AND + a.grade < 0)) AND s.timemodified IS NOT NULL AND s.status = ? AND s.latest = 1 AND diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 1c68a5d43a9..a287bef49fe 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -2024,6 +2024,7 @@ class assign { $params['assignid'] = $this->get_instance()->id; $params['submitted'] = ASSIGN_SUBMISSION_STATUS_SUBMITTED; + $sqlscalegrade = $this->get_instance()->grade < 0 ? ' OR g.grade = -1' : ''; $sql = 'SELECT COUNT(s.userid) FROM {assign_submission} s @@ -2037,7 +2038,8 @@ class assign { s.assignment = :assignid AND s.timemodified IS NOT NULL AND s.status = :submitted AND - (s.timemodified >= g.timemodified OR g.timemodified IS NULL OR g.grade IS NULL)'; + (s.timemodified >= g.timemodified OR g.timemodified IS NULL OR g.grade IS NULL ' + . $sqlscalegrade . ')'; return $DB->count_records_sql($sql, $params); }