]> git.mjollnir.org Git - moodle.git/commitdiff
fixing an error when no grade item is listed for this course
authortoyomoyo <toyomoyo>
Mon, 2 Jul 2007 02:40:30 +0000 (02:40 +0000)
committertoyomoyo <toyomoyo>
Mon, 2 Jul 2007 02:40:30 +0000 (02:40 +0000)
grade/report/user/index.php

index 6894387ad4682e7cbbdd869931959f45a7e1aafd..30a7a4c344992d43c08915b39fb16966eb937936 100644 (file)
@@ -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[] = '<img src = "'.$icon.'" alt="'.$grade_item->itemname.'" class="activityicon"/>';
+            /// 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[] = '';
             }
-        } 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[] = '<b>'.$grade_item->get_name().'</b>';
-        } else {
-            $data[] = $grade_item->get_name();
-        }
+            /// 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_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[] = '&nbsp;';
+            }
 
-        /// prints notes
-        if (!empty($grade_text->feedback)) {
-            $data[] = $grade_text->feedback;
-        } else {
-            $data[] = '&nbsp;';
+            $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();
-
 ?>