From 26ce8a1f15b2fd2cf4a17dda5cc85af72ee5d9e9 Mon Sep 17 00:00:00 2001 From: Pavel Sokolov Date: Fri, 17 Mar 2017 11:39:21 +0300 Subject: [PATCH] MDL-57858 mod_assign: fix submissions count for assign with scales --- mod/assign/lib.php | 6 +++++- mod/assign/locallib.php | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mod/assign/lib.php b/mod/assign/lib.php index d0543925b46..30fd891f1c1 100644 --- a/mod/assign/lib.php +++ b/mod/assign/lib.php @@ -756,10 +756,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 b46aa97c5ec..958f5eac65f 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -1975,6 +1975,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 @@ -1988,7 +1989,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); }