diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index a04ea21f6fd..e369b636ac1 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -429,7 +429,7 @@ class assignment_base { /// Check to see if groups are being used in this assignment if ($groupmode = groupmode($course, $cm)) { // Groups are being used - $currentgroup = setup_and_print_groups($course, $groupmode, 'submissions.php?id='.$assignment->id.'&sort='.$sort.'&dir='.$dir); + $currentgroup = setup_and_print_groups($course, $groupmode, 'submissions.php?id='.$this->cm->id); } else { $currentgroup = false; } @@ -477,12 +477,15 @@ class assignment_base { } - $select = 'SELECT u.id, u.firstname, u.lastname, u.picture '; + $select = 'SELECT u.id, u.firstname, u.lastname, u.picture, s.id AS submissionid, s.grade, s.timemodified, s.timemarked '; $group = ''; $sql = 'FROM '.$CFG->prefix.'user u '. - 'WHERE '.$where.'u.id IN ('.implode(',', array_keys($users)).')'; + 'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid AND s.assignment = '.$this->assignment->id.' '. + 'WHERE '.$where.'u.id IN ('.implode(',', array_keys($users)).') '; + echo $select.$sql.$group.$sort; + $total = count_records_sql('SELECT COUNT(u.id) '.$sql); $table->pagesize($perpage, $total); @@ -497,20 +500,16 @@ class assignment_base { $strupdate = get_string('update'); $grademenu = make_grades_menu($this->assignment->grade); - $ausers = get_records_sql($select.$sql.$sort.$limit); - - $submissions = get_records_sql("SELECT s.userid, s.id, s.grade, s.timemodified, s.timemarked - FROM {$CFG->prefix}assignment_submissions s - WHERE s.assignment = ".$this->assignment->id." - AND s.userid IN (".implode(',', array_keys($ausers)).')'); + if (($ausers = get_records_sql($select.$sql.$group.$sort.$limit)) === false) { + $ausers = array(); + } foreach ($ausers as $auser) { $picture = print_user_picture($auser->id, $course->id, $auser->picture, false, true); - if (!empty($submissions[$auser->id])) { - $submission = $submissions[$auser->id]; - if ($submission->timemodified > 0) { - $studentmodified = '