]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-9633 Refactored the index.php page into a child class of grade_report
authornicolasconnault <nicolasconnault>
Sat, 14 Jul 2007 03:46:24 +0000 (03:46 +0000)
committernicolasconnault <nicolasconnault>
Sat, 14 Jul 2007 03:46:24 +0000 (03:46 +0000)
grade/report/lib.php
grade/report/user/index.php

index 05bb3fc62429681b9cc3702c7bcca1635a9fafa2..38e54d00f1a99de52be2796cac0ca09764f366c4 100755 (executable)
@@ -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;
index 2e023a6887841ab3a91c132ea95b980c6eba1729..3d102c323cf6e3eccd0e6fa5e147b7c40fc5e202 100644 (file)
 
 /// 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.'&amp;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[] = '<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[] = '&nbsp;';
-            }
-            $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);
+}
 ?>