From f70079b9bf6fc5097ad96e57efd40ef4a9ea35f0 Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Fri, 13 Jul 2012 13:11:46 +0800 Subject: [PATCH] MDL-2283: Display number of assignment submissions that need grading in the grading summary --- mod/assign/lang/en/assign.php | 1 + mod/assign/locallib.php | 24 +++++++++++++++++++++++- mod/assign/renderable.php | 7 ++++++- mod/assign/renderer.php | 2 ++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/mod/assign/lang/en/assign.php b/mod/assign/lang/en/assign.php index 251cff50030..b39750dc47c 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();