diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index 47b6d897667..5b2438b1e26 100644 --- a/mod/assign/lang/en/assign.php +++ b/mod/assign/lang/en/assign.php @@ -173,6 +173,7 @@ $string['nousersselected'] = 'No users selected'; $string['numberofdraftsubmissions'] = 'Drafts'; $string['numberofparticipants'] = 'Participants'; $string['numberofsubmittedassignments'] = 'Submitted'; +$string['numberofsubmissionsneedgrading'] = 'Needs grading'; $string['offline'] = 'No online submissions required'; $string['overdue'] = 'Assignment is overdue by: {$a}'; $string['outlinegrade'] = 'Grade: {$a}'; diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php index 85ff77eb95e..2fc41952b0f 100644 --- a/mod/assign/locallib.php +++ b/mod/assign/locallib.php @@ -967,6 +967,27 @@ class assign { return count_enrolled_users($this->context, "mod/assign:submit", $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. + * + * @return int number of matching submissions + */ + public function count_submissions_need_grading() { + global $DB; + + $params = array($this->get_course_module()->instance); + + 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)", + $params); + } + /** * Load a count of users enrolled in the current course with the specified permission and group (optional) * @@ -2091,7 +2112,8 @@ class assign { $this->is_any_submission_plugin_enabled(), $this->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED), $this->get_instance()->duedate, - $this->get_course_module()->id + $this->get_course_module()->id, + $this->count_submissions_need_grading() )); } $grade = $this->get_user_grade($USER->id, false); diff --git a/mod/assign/renderable.php b/mod/assign/renderable.php index cb1daf93bf0..5e710a45125 100644 --- a/mod/assign/renderable.php +++ b/mod/assign/renderable.php @@ -405,6 +405,8 @@ class assign_grading_summary implements renderable { var $submissionsenabled = false; /** @var int submissionssubmittedcount - The number of submissions in submitted status */ var $submissionssubmittedcount = 0; + /** @var int submissionsneedgradingcount - The number of submissions that need grading */ + var $submissionsneedgradingcount = 0; /** @var int duedate - The assignment due date (if one is set) */ var $duedate = 0; /** @var int coursemoduleid - The assignment course module id */ @@ -421,7 +423,9 @@ class assign_grading_summary implements renderable { * @param int $duedate * @param int $coursemoduleid */ - public function __construct($participantcount, $submissiondraftsenabled, $submissiondraftscount, $submissionsenabled, $submissionssubmittedcount, $duedate, $coursemoduleid) { + public function __construct($participantcount, $submissiondraftsenabled, $submissiondraftscount, + $submissionsenabled, $submissionssubmittedcount, + $duedate, $coursemoduleid, $submissionsneedgradingcount) { $this->participantcount = $participantcount; $this->submissiondraftsenabled = $submissiondraftsenabled; $this->submissiondraftscount = $submissiondraftscount; @@ -429,6 +433,7 @@ class assign_grading_summary implements renderable { $this->submissionssubmittedcount = $submissionssubmittedcount; $this->duedate = $duedate; $this->coursemoduleid = $coursemoduleid; + $this->submissionsneedgradingcount = $submissionsneedgradingcount; } diff --git a/mod/assign/renderer.php b/mod/assign/renderer.php index ab3af8a60b7..8ffe18f27e4 100644 --- a/mod/assign/renderer.php +++ b/mod/assign/renderer.php @@ -248,6 +248,8 @@ class mod_assign_renderer extends plugin_renderer_base { if ($summary->submissionsenabled) { $this->add_table_row_tuple($t, get_string('numberofsubmittedassignments', 'assign'), $summary->submissionssubmittedcount); + $this->add_table_row_tuple($t, get_string('numberofsubmissionsneedgrading', 'assign'), + $summary->submissionsneedgradingcount); } $time = time();