echo '<tr>';
echo '<td class="left picture">';
if ($teacher) {
- print_user_picture($teacher->id, $this->course->id, $teacher->picture);
+ print_user_picture($teacher, $this->course->id, $teacher->picture);
}
echo '</td>';
echo '<td class="topic">';
$nextid = 0;
if ($users) {
- $select = 'SELECT u.id, u.firstname, u.lastname, u.picture,
+ $select = 'SELECT u.id, u.firstname, u.lastname, u.picture, u.imagealt,
s.id AS submissionid, s.grade, s.submissioncomment,
s.timemodified, s.timemarked,
COALESCE(SIGN(SIGN(s.timemarked) + SIGN(s.timemarked - s.timemodified)), 0) AS status ';
global $USER;
$teacher = $USER;
}
- print_user_picture($teacher->id, $this->course->id, $teacher->picture);
+ print_user_picture($teacher, $this->course->id, $teacher->picture);
echo '</td>';
echo '<td class="content">';
echo '<form id="submitform" action="submissions.php" method="post">';
///End of teacher info row, Start of student info row
echo '<tr>';
echo '<td class="picture user">';
- print_user_picture($user->id, $this->course->id, $user->picture);
+ print_user_picture($user, $this->course->id, $user->picture);
echo '</td>';
echo '<td class="topic">';
echo '<div class="from">';
echo '<tr>';
echo '<td class="left picture">';
- print_user_picture($teacher->id, $this->course->id, $teacher->picture);
+ print_user_picture($teacher, $this->course->id, $teacher->picture);
echo '</td>';
echo '<td class="topic">';
echo '<div class="from">';
}
}
}
- if (has_capability('mod/assignment:grade', $this->context)
- and $this->can_unfinalize($submission)
- and $mode != '') { // we do not want it on view.php page
- $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'unfinalize', 'mode'=>$mode, 'offset'=>$offset);
- $output .= print_single_button('upload.php', $options, get_string('unfinalize', 'assignment'), 'post', '_self', true);
+ if (has_capability('mod/assignment:grade', $this->context) and $mode != '') { // we do not want it on view.php page
+ if ($this->can_unfinalize($submission)) {
+ $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'unfinalize', 'mode'=>$mode, 'offset'=>$offset);
+ $output .= print_single_button('upload.php', $options, get_string('unfinalize', 'assignment'), 'post', '_self', true);
+ } else if ($this->can_finalize($submission)) {
+ $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'finalize', 'mode'=>$mode, 'offset'=>$offset);
+ $output .= print_single_button('upload.php', $options, get_string('finalize', 'assignment'), 'post', '_self', true);
+ }
}
$output = '<div class="files">'.$output.'</div>';
function finalize() {
global $USER;
- $confirm = optional_param('confirm', 0, PARAM_BOOL);
+ $userid = optional_param('userid', 0, PARAM_INT);
- $returnurl = 'view.php?id='.$this->cm->id;
- $submission = $this->get_submission($USER->id);
+ if ($userid) {
+ $mode = required_param('mode', PARAM_ALPHA);
+ $offset = required_param('offset', PARAM_INT);
+ $returnurl = "submissions.php?id={$this->cm->id}&userid=$userid&mode=$mode&offset=$offset&forcerefresh=1";
+ $confirm = true;
+ $submission = $this->get_submission($userid);
+
+ } else {
+ $confirm = optional_param('confirm', 0, PARAM_BOOL);
+ $returnurl = 'view.php?id='.$this->cm->id;
+ $submission = $this->get_submission($USER->id);
+ }
if (!$this->can_finalize($submission)) {
redirect($returnurl); // probably already graded, erdirect to assignment page, the reason should be obvious
} else {
$updated = new object();
- $updated->id = $submission->id;
- $updated->data2 = ASSIGNMENT_STATUS_SUBMITTED;
+ $updated->id = $submission->id;
+ $updated->data2 = ASSIGNMENT_STATUS_SUBMITTED;
$updated->timemodified = time();
if (update_record('assignment_submissions', $updated)) {
add_to_log($this->course->id, 'assignment', 'upload', //TODO: add finilize action to log
if (has_capability('mod/assignment:submit', $this->context) // can submit
and $this->isopen() // assignment not closed yet
- and (empty($submission) or $submission->grade == -1) // not graded
and (empty($submission) or $submission->userid == $USER->id) // his/her own submission
and $this->count_user_files($USER->id) < $this->assignment->var1 // file limit not reached
and !$this->is_finalized($submission)) { // no uploading after final submission
if (has_capability('mod/assignment:submit', $this->context)
and $this->isopen() // assignment not closed yet
- and (!empty($submission) and $submission->grade == -1) // not graded
and $this->assignment->resubmit // deleting allowed
and $USER->id == $submission->userid // his/her own submission
and !$this->is_finalized($submission)) { // no deleting after final submission
}
function is_finalized($submission) {
- if (!empty($submission)
- and $submission->data2 == ASSIGNMENT_STATUS_SUBMITTED) {
+ if ($submission->data2 == ASSIGNMENT_STATUS_SUBMITTED) {
return true;
} else {
return false;
function can_unfinalize($submission) {
if (has_capability('mod/assignment:grade', $this->context)
- and !empty($submission)
- and $this->is_finalized($submission)
- and $submission->grade == -1) {
+ and $this->isopen()
+ and $this->is_finalized($submission)) {
return true;
} else {
return false;
function can_finalize($submission) {
global $USER;
- if (has_capability('mod/assignment:submit', $this->context) // can submit
+ if ($this->is_finalized($submission)) {
+ return false;
+ }
+
+ if (has_capability('mod/assignment:grade', $this->context)) {
+ return true;
+
+ } else if (has_capability('mod/assignment:submit', $this->context) // can submit
and $this->isopen() // assignment not closed yet
and !empty($submission) // submission must exist
- and $submission->data2 != ASSIGNMENT_STATUS_SUBMITTED // not graded
and $submission->userid == $USER->id // his/her own submission
- and $submission->grade == -1 // no reason to finalize already graded submission
and ($this->count_user_files($USER->id)
- or ($this->notes_allowed() and !empty($submission->data1)))) { // something must be submitted
+ or ($this->notes_allowed() and !empty($submission->data1)))) { // something must be submitted
return true;
} else {
global $USER;
if (has_capability('mod/assignment:submit', $this->context)
- and $this->notes_allowed() // notesd must be allowed
+ and $this->notes_allowed() // notesd must be allowed
and $this->isopen() // assignment not closed yet
- and (empty($submission) or $submission->grade == -1) // not graded
and (empty($submission) or $USER->id == $submission->userid) // his/her own submission
and !$this->is_finalized($submission)) { // no updateingafter final submission
return true;