Permalink
Browse files

MDL-37635 Assign: Prevent errors when viewing a feedback when there i…

…s no grade_item in the gradebook
  • Loading branch information...
1 parent 5e3412d commit 7d054079c57bb5ffebf301a96f8e72944ff05d95 @damyon damyon committed Feb 1, 2013
Showing with 52 additions and 27 deletions.
  1. +40 −17 mod/assign/locallib.php
  2. +12 −10 mod/assign/renderer.php
View
@@ -2180,8 +2180,12 @@ public function view_student_summary($user, $showlinks) {
$this->get_instance()->id,
$user->id);
- $gradingitem = $gradinginfo->items[0];
- $gradebookgrade = $gradingitem->grades[$user->id];
+ $gradingitem = null;
+ $gradebookgrade = '-';
+ if (isset($gradinginfo->items[0])) {
+ $gradingitem = $gradinginfo->items[0];
+ $gradebookgrade = $gradingitem->grades[$user->id];
+ }
// check to see if all feedback plugins are empty
$emptyplugins = true;
@@ -2196,24 +2200,34 @@ public function view_student_summary($user, $showlinks) {
}
- if (!($gradebookgrade->hidden) && ($gradebookgrade->grade !== null || !$emptyplugins)) {
+ $cangrade = has_capability('mod/assign:grade', $this->get_context());
+ // If there is feedback or a visible grade, show the summary.
+ if ((!empty($gradebookgrade->grade) && ($cangrade || !$gradebookgrade->hidden)) ||
+ !$emptyplugins) {
- $gradefordisplay = '';
+ $gradefordisplay = null;
+ $gradeddate = null;
+ $grader = null;
$gradingmanager = get_grading_manager($this->get_context(), 'mod_assign', 'submissions');
- if ($controller = $gradingmanager->get_active_controller()) {
- $controller->set_grade_range(make_grades_menu($this->get_instance()->grade));
- $gradefordisplay = $controller->render_grade($PAGE,
- $grade->id,
- $gradingitem,
- $gradebookgrade->str_long_grade,
- has_capability('mod/assign:grade', $this->get_context()));
- } else {
- $gradefordisplay = $this->display_grade($gradebookgrade->grade, false);
+ // Only show the grade if it is not hidden in gradebook.
+ if (!empty($gradebookgrade->grade) && ($cangrade || !$gradebookgrade->hidden)) {
+ if ($controller = $gradingmanager->get_active_controller()) {
+ $controller->set_grade_range(make_grades_menu($this->get_instance()->grade));
+ $gradefordisplay = $controller->render_grade($PAGE,
+ $grade->id,
+ $gradingitem,
+ $gradebookgrade->str_long_grade,
+ $cangrade);
+ } else {
+ $gradefordisplay = $this->display_grade($gradebookgrade->grade, false);
+ }
+ $gradeddate = $gradebookgrade->dategraded;
+ if (isset($grade->grader)) {
+ $grader = $DB->get_record('user', array('id'=>$grade->grader));
+ }
}
- $gradeddate = $gradebookgrade->dategraded;
- $grader = $DB->get_record('user', array('id'=>$grade->grader));
$feedbackstatus = new assign_feedback_status($gradefordisplay,
$gradeddate,
@@ -3093,11 +3107,20 @@ public function add_grade_form_elements(MoodleQuickForm $mform, stdClass $data,
}
if (has_all_capabilities(array('gradereport/grader:view', 'moodle/grade:viewall'), $this->get_course_context())) {
+ $usergrade = '-';
+ if (isset($gradinginfo->items[0]->grades[$userid]->str_grade)) {
+ $usergrade = $gradinginfo->items[0]->grades[$userid]->str_grade;
+ }
$gradestring = $this->output->action_link(new moodle_url('/grade/report/grader/index.php',
array('id'=>$this->get_course()->id)),
- $gradinginfo->items[0]->grades[$userid]->str_grade);
+ $usergrade);
} else {
- $gradestring = $gradinginfo->items[0]->grades[$userid]->str_grade;
+ $usergrade = '-';
+ if (isset($gradinginfo->items[0]->grades[$userid]) &&
+ !$grading_info->items[0]->grades[$userid]->hidden) {
+ $usergrade = $gradinginfo->items[0]->grades[$userid]->str_grade;
+ }
+ $gradestring = $usergrade;
}
$mform->addElement('static', 'finalgrade', get_string('currentgrade', 'assign').':', $gradestring);
View
@@ -303,17 +303,19 @@ public function render_assign_feedback_status(assign_feedback_status $status) {
$o .= $this->output->box_start('boxaligncenter feedbacktable');
$t = new html_table();
- $row = new html_table_row();
- $cell1 = new html_table_cell(get_string('grade'));
- $cell2 = new html_table_cell($status->gradefordisplay);
- $row->cells = array($cell1, $cell2);
- $t->data[] = $row;
+ if (isset($status->gradefordisplay)) {
+ $row = new html_table_row();
+ $cell1 = new html_table_cell(get_string('grade'));
+ $cell2 = new html_table_cell($status->gradefordisplay);
+ $row->cells = array($cell1, $cell2);
+ $t->data[] = $row;
- $row = new html_table_row();
- $cell1 = new html_table_cell(get_string('gradedon', 'assign'));
- $cell2 = new html_table_cell(userdate($status->gradeddate));
- $row->cells = array($cell1, $cell2);
- $t->data[] = $row;
+ $row = new html_table_row();
+ $cell1 = new html_table_cell(get_string('gradedon', 'assign'));
+ $cell2 = new html_table_cell(userdate($status->gradeddate));
+ $row->cells = array($cell1, $cell2);
+ $t->data[] = $row;
+ }
if ($status->grader) {
$row = new html_table_row();

0 comments on commit 7d05407

Please sign in to comment.