From: nicolasconnault Date: Sat, 14 Jul 2007 03:46:24 +0000 (+0000) Subject: MDL-9633 Refactored the index.php page into a child class of grade_report X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=1fdab481c281bdb4967c80de0bd4ba4121290e92;p=moodle.git MDL-9633 Refactored the index.php page into a child class of grade_report --- diff --git a/grade/report/lib.php b/grade/report/lib.php index 05bb3fc624..38e54d00f1 100755 --- a/grade/report/lib.php +++ b/grade/report/lib.php @@ -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; diff --git a/grade/report/user/index.php b/grade/report/user/index.php index 2e023a6887..3d102c323c 100644 --- a/grade/report/user/index.php +++ b/grade/report/user/index.php @@ -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)); - - $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(); +$numusers = $report->get_numusers(); - $params->itemid = $grade_item->id; - $params->userid = $userid; - $grade_grades = new grade_grades($params); - $grade_text = $grade_grades->load_text(); +$gradetotal = 0; +$gradesum = 0; - /// 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[] = ''; - } - - // 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 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 "
asdfas
"; - $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); +} ?>