From: toyomoyo Date: Mon, 2 Jul 2007 02:40:30 +0000 (+0000) Subject: fixing an error when no grade item is listed for this course X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=f208e0e1d1616d191e51ec295755d46e3281808b;p=moodle.git fixing an error when no grade item is listed for this course --- diff --git a/grade/report/user/index.php b/grade/report/user/index.php index 6894387ad4..30a7a4c344 100644 --- a/grade/report/user/index.php +++ b/grade/report/user/index.php @@ -12,6 +12,9 @@ if (!$userid = optional_param('user', 0, PARAM_INT)) { $userid = $USER->id; } +// get the user (for full name) +$user = get_record('user', 'id', $userid); + $context = get_context_instance(CONTEXT_COURSE, $courseid); // find total number of participants $numusers = count(get_role_users(@implode(',', $CFG->gradebookroles), $context)); @@ -50,117 +53,119 @@ $numusers = count(get_role_users(@implode(',', $CFG->gradebookroles), $context)) )); $table->setup(); + + // print the page + print_heading(get_string('userreport', 'grades'). " - ".fullname($user)); - $all_grade_items = grade_item::fetch_all(array('courseid'=>$courseid)); - $grade_items = array(); - foreach ($all_grade_items as $item) { - $grade_items[$item->sortorder] = $item; - } - unset($all_grade_items); - ksort($grade_items); + if ($all_grade_items = grade_item::fetch_all(array('courseid'=>$courseid))) { + $grade_items = array(); + foreach ($all_grade_items as $item) { + $grade_items[$item->sortorder] = $item; + } + unset($all_grade_items); + ksort($grade_items); - $total = $grade_items[1]; - unset($grade_items[1]); - $grade_items[] = $total; + $total = $grade_items[1]; + unset($grade_items[1]); + $grade_items[] = $total; - foreach ($grade_items as $grade_item) { + foreach ($grade_items as $grade_item) { - $data = array(); + $data = array(); - $params->itemid = $grade_item->id; - $params->userid = $userid; - $grade_grades = new grade_grades($params); - $grade_text = $grade_grades->load_text(); + $params->itemid = $grade_item->id; + $params->userid = $userid; + $grade_grades = new grade_grades($params); + $grade_text = $grade_grades->load_text(); - /// prints mod icon if available - if ($grade_item->itemtype == 'mod') { - $iconpath = $CFG->dirroot.'/mod/'.$grade_item->itemmodule.'/icon.gif'; - $icon = $CFG->wwwroot.'/mod/'.$grade_item->itemmodule.'/icon.gif'; - if (file_exists($iconpath)) { - $data[] = ''.$grade_item->itemname.''; + /// prints mod icon if available + if ($grade_item->itemtype == 'mod') { + $iconpath = $CFG->dirroot.'/mod/'.$grade_item->itemmodule.'/icon.gif'; + $icon = $CFG->wwwroot.'/mod/'.$grade_item->itemmodule.'/icon.gif'; + if (file_exists($iconpath)) { + $data[] = ''.$grade_item->itemname.''; + } + } else { + $data[] = ''; } - } else { - $data[] = ''; - } - // TODO: indicate items that "needsupdate" - missing final calculation + // TODO: indicate items that "needsupdate" - missing final calculation - /// prints grade item name - if ($grade_item->is_course_item() or $grade_item->is_category_item()) { - $data[] = ''.$grade_item->get_name().''; - } else { - $data[] = $grade_item->get_name(); - } + /// prints grade item name + if ($grade_item->is_course_item() or $grade_item->is_category_item()) { + $data[] = ''.$grade_item->get_name().''; + } else { + $data[] = $grade_item->get_name(); + } + + /// prints the grade + + if ($grade_item->scaleid) { + // using scales + if ($scale = get_record('scale', 'id', $grade_item->scaleid)) { + $scales = explode(",", $scale->scale); + // reindex because scale is off 1 + // invalid grade if gradeval < 1 + if ((int) $grade_grades->finalgrade < 1) { + $data[] = '-'; + } else { + $data[] = $scales[$grade_grades->finalgrade-1]; + } + } + } else { + // normal grade, or text, just display + $data[] = $grade_grades->finalgrade; + } - /// prints the grade + /// prints percentage - if ($grade_item->scaleid) { - // using scales - if ($scale = get_record('scale', 'id', $grade_item->scaleid)) { - $scales = explode(",", $scale->scale); - // reindex because scale is off 1 - // invalid grade if gradeval < 1 - if ((int) $grade_grades->finalgrade < 1) { - $data[] = '-'; + if ($grade_item->gradetype == GRADE_TYPE_VALUE) { + // processing numeric grade + if ($grade_grades->finalgrade) { + $percentage = (($grade_grades->finalgrade / $grade_item->grademax) * 100).'%'; } else { - $data[] = $scales[$grade_grades->finalgrade-1]; + $percentage = '-'; } - } - } else { - // normal grade, or text, just display - $data[] = $grade_grades->finalgrade; - } - /// prints percentage + } else if ($grade_item->gradetype == GRADE_TYPE_SCALE) { + // processing scale grade + $scale = get_record('scale', 'id', $grade_item->scaleid); + $scalevals = explode(",", $scale->scale); + $percentage = (($grade_grades->finalgrade) / count($scalevals) * 100).'%'; - if ($grade_item->gradetype == GRADE_TYPE_VALUE) { - // processing numeric grade - if ($grade_grades->finalgrade) { - $percentage = (($grade_grades->finalgrade / $grade_item->grademax) * 100).'%'; } else { + // text grade $percentage = '-'; } - } else if ($grade_item->gradetype == GRADE_TYPE_SCALE) { - // processing scale grade - $scale = get_record('scale', 'id', $grade_item->scaleid); - $scalevals = explode(",", $scale->scale); - $percentage = (($grade_grades->finalgrade) / count($scalevals) * 100).'%'; + $data[] = $percentage; - } else { - // text grade - $percentage = '-'; - } + /// prints rank + if ($grade_grades->finalgrade) { + /// find the number of users with a higher grade + $sql = "SELECT COUNT(DISTINCT(userid)) + FROM {$CFG->prefix}grade_grades + WHERE finalgrade > $grade_grades->finalgrade + AND itemid = $grade_item->id"; + $rank = count_records_sql($sql) + 1; + + $data[] = "$rank/$numusers"; + } else { + // no grade, no rank + $data[] = "-"; + } - $data[] = $percentage; - - /// prints rank - if ($grade_grades->finalgrade) { - /// find the number of users with a higher grade - $sql = "SELECT COUNT(DISTINCT(userid)) - FROM {$CFG->prefix}grade_grades - WHERE finalgrade > $grade_grades->finalgrade - AND itemid = $grade_item->id"; - $rank = count_records_sql($sql) + 1; - - $data[] = "$rank/$numusers"; - } else { - // no grade, no rank - $data[] = "-"; - } + /// prints notes + if (!empty($grade_text->feedback)) { + $data[] = $grade_text->feedback; + } else { + $data[] = ' '; + } - /// prints notes - if (!empty($grade_text->feedback)) { - $data[] = $grade_text->feedback; - } else { - $data[] = ' '; + $table->add_data($data); } - - $table->add_data($data); + $table->print_html(); + } else { + notify(get_string('nogradeitem', 'grades')); } - - // print the page - print_heading(get_string('userreport', 'grades')); - $table->print_html(); - ?>