MDL-9633 Refactored the index.php page into a child class of grade_report
This commit is contained in:
@@ -198,7 +198,8 @@ class grade_report {
|
||||
} else {
|
||||
// decimal points as specified by user
|
||||
$decimals = get_user_preferences('grade_report_decimalpoints', $CFG->grade_report_decimalpoints);
|
||||
$gradeval = number_format($gradeval, $decimals, $this->get_lang_string('decpoint', 'langconfig'), $this->get_lang_string('thousandsep', 'langconfig'));
|
||||
$gradeval = number_format($gradeval, $decimals, $this->get_lang_string('decpoint', 'langconfig'),
|
||||
$this->get_lang_string('thousandsep', 'langconfig'));
|
||||
}
|
||||
|
||||
return $gradeval;
|
||||
|
||||
+12
-157
@@ -2,172 +2,27 @@
|
||||
|
||||
/// This creates and handles the whole user report interface, sans header and footer
|
||||
|
||||
require_once($CFG->libdir.'/tablelib.php');
|
||||
include_once($CFG->libdir.'/gradelib.php');
|
||||
require_once($CFG->dirroot.'/grade/report/lib.php');
|
||||
require_once($CFG->dirroot.'/grade/report/user/lib.php');
|
||||
|
||||
// get the params
|
||||
$courseid = required_param('id', PARAM_INT);
|
||||
if (!$userid = optional_param('user', 0, PARAM_INT)) {
|
||||
// current user
|
||||
$userid = $USER->id;
|
||||
}
|
||||
|
||||
// get the user (for full name)
|
||||
$user = get_record('user', 'id', $userid);
|
||||
// Create a report instance
|
||||
$report = new grade_report_user($courseid, $context, $userid);
|
||||
|
||||
$context = get_context_instance(CONTEXT_COURSE, $courseid);
|
||||
// find total number of participants
|
||||
$numusers = count(get_role_users(@implode(',', $CFG->gradebookroles), $context));
|
||||
$numusers = $report->get_numusers();
|
||||
|
||||
$gradetotal = 0;
|
||||
$gradesum = 0;
|
||||
$gradetotal = 0;
|
||||
$gradesum = 0;
|
||||
|
||||
/*
|
||||
* Table has 6 columns
|
||||
*| pic | itemname/description | grade (grade_final) | percentage | rank | feedback |
|
||||
*/
|
||||
$baseurl = $CFG->wwwroot.'/grade/report?id='.$courseid.'&userid='.$userid;
|
||||
|
||||
// setting up table headers
|
||||
$tablecolumns = array('itempic', 'itemname', 'grade', 'percentage', 'rank', 'feedback');
|
||||
$tableheaders = array('', get_string('gradeitem', 'grades'), get_string('grade'), get_string('percent', 'grades'), get_string('rank', 'grades'), get_string('feedback'));
|
||||
|
||||
$table = new flexible_table('grade-report-user-'.$course->id);
|
||||
|
||||
$table->define_columns($tablecolumns);
|
||||
$table->define_headers($tableheaders);
|
||||
$table->define_baseurl($baseurl);
|
||||
|
||||
$table->set_attribute('cellspacing', '0');
|
||||
$table->set_attribute('id', 'user-grade');
|
||||
$table->set_attribute('class', 'boxaligncenter generaltable');
|
||||
|
||||
// not sure tables should be sortable or not, because if we allow it then sorted resutls distort grade category structure and sortorder
|
||||
$table->set_control_variables(array(
|
||||
TABLE_VAR_SORT => 'ssort',
|
||||
TABLE_VAR_HIDE => 'shide',
|
||||
TABLE_VAR_SHOW => 'sshow',
|
||||
TABLE_VAR_IFIRST => 'sifirst',
|
||||
TABLE_VAR_ILAST => 'silast',
|
||||
TABLE_VAR_PAGE => 'spage'
|
||||
));
|
||||
|
||||
$table->setup();
|
||||
|
||||
// print the page
|
||||
print_heading(get_string('userreport', 'grades'). " - ".fullname($user));
|
||||
|
||||
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;
|
||||
|
||||
foreach ($grade_items as $grade_item) {
|
||||
|
||||
$data = array();
|
||||
|
||||
$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[] = '<img src = "'.$icon.'" alt="'.$grade_item->itemname.'" class="activityicon"/>';
|
||||
}
|
||||
} else {
|
||||
$data[] = '';
|
||||
}
|
||||
|
||||
// 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[] = '<b>'.$grade_item->get_name().'</b>';
|
||||
} 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_report::get_grade_clean($grade_grades->finalgrade);
|
||||
}
|
||||
|
||||
/// prints percentage
|
||||
|
||||
if ($grade_item->gradetype == GRADE_TYPE_VALUE) {
|
||||
// processing numeric grade
|
||||
if ($grade_grades->finalgrade) {
|
||||
$percentage = grade_report::get_grade_clean(($grade_grades->finalgrade / $grade_item->grademax) * 100).'%';
|
||||
} else {
|
||||
$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_report::get_grade_clean(($grade_grades->finalgrade) / count($scalevals) * 100).'%';
|
||||
|
||||
} else {
|
||||
// text grade
|
||||
$percentage = '-';
|
||||
}
|
||||
|
||||
$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[] = ' ';
|
||||
}
|
||||
$table->add_data($data);
|
||||
}
|
||||
|
||||
//echo "<div><table class='boxaligncenter'><tr><td>asdfas</td></tr></table></div>";
|
||||
$table->print_html();
|
||||
} else {
|
||||
notify(get_string('nogradeitem', 'grades'));
|
||||
}
|
||||
// print the page
|
||||
print_heading(get_string('userreport', 'grades'). " - ".fullname($report->user));
|
||||
|
||||
if ($report->fill_table()) {
|
||||
echo $report->print_table(true);
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user