]> git.mjollnir.org Git - moodle.git/commitdiff
Merged changes from MOODLE_17_STABLE for MDL-7707
authormark-nielsen <mark-nielsen>
Tue, 28 Nov 2006 05:54:43 +0000 (05:54 +0000)
committermark-nielsen <mark-nielsen>
Tue, 28 Nov 2006 05:54:43 +0000 (05:54 +0000)
mod/lesson/index.php
mod/lesson/lib.php

index 497ad70696ce7c8a23b96230e6619eabbc868b38..d15550582fb1f6e9d1a1da3dce4b0c4a3d600855 100644 (file)
@@ -8,7 +8,8 @@
  **/
 
     require_once("../../config.php");
-    require_once("locallib.php");
+    require_once($CFG->dirroot.'/mod/lesson/lib.php');
+    require_once($CFG->dirroot.'/mod/lesson/locallib.php');
 
     $id = required_param('id', PARAM_INT);   // course
 
@@ -29,8 +30,8 @@
 
 /// Print the header
 
-    if ($course->id != SITEID) {
-        $navigation = "<a href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->";
+    if ($course->category) {
+        $navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> ->";
     } else {
         $navigation = '';
     }
             if (has_capability('mod/lesson:manage', $context)) {
                 $grade_value = $lesson->grade;
             } else {
-                // it's a student, show their mean or maximum grade
-                if ($lesson->usemaxgrade) {
-                    $grade = get_record_sql("SELECT MAX(grade) as grade FROM {$CFG->prefix}lesson_grades 
-                            WHERE lessonid = $lesson->id AND userid = $USER->id GROUP BY userid");
-                } else {
-                    $grade = get_record_sql("SELECT AVG(grade) as grade FROM {$CFG->prefix}lesson_grades 
-                            WHERE lessonid = $lesson->id AND userid = $USER->id GROUP BY userid");
-                }
-                if ($grade) {
+                // it's a student, show their grade
+                $grade_value = 0;
+                if ($return = lesson_grades($lesson->id)) {
                     // grades are stored as percentages
-                    $grade_value = number_format($grade->grade * $lesson->grade / 100, 1);
-                } else {
-                    $grade_value = 0;
+                    if (isset($return->grades[$USER->id])) {
+                        $grade_value = $return->grades[$USER->id];
+                    }
                 }
             }
             $table->data[] = array ($lesson->section, $link, $grade_value, $due);
index b6ec3a2179378be93ed926fb36fb1d01cb186252..3a3ea184745d3c0aa7effd777bdc08e1499d6636 100644 (file)
@@ -388,14 +388,24 @@ function lesson_grades($lessonid) {
     if (!$lesson = get_record("lesson", "id", $lessonid)) {
         return NULL;
     }
-    if ($lesson->usemaxgrade) {
-        $grades = get_records_sql_menu("SELECT userid,MAX(grade) FROM {$CFG->prefix}lesson_grades WHERE
-                lessonid = $lessonid GROUP BY userid");
-    } else {
-        $grades = get_records_sql_menu("SELECT userid,AVG(grade) FROM {$CFG->prefix}lesson_grades WHERE
+    if ($lesson->retake) {
+        if ($lesson->usemaxgrade) {
+            $grades = get_records_sql_menu("SELECT userid,MAX(grade) FROM {$CFG->prefix}lesson_grades WHERE
+            lessonid = $lessonid GROUP BY userid");
+        } else {
+            $grades = get_records_sql_menu("SELECT userid,AVG(grade) FROM {$CFG->prefix}lesson_grades WHERE
             lessonid = $lessonid GROUP BY userid");
+        }
+    } else {
+        // Retakes is turned Off; only count first attempt
+        $firstgrades = get_records_sql("SELECT userid, MIN(completed), grade FROM {$CFG->prefix}lesson_grades WHERE lessonid = $lessonid GROUP BY userid");
+        $grades = array();
+        if (!empty($firstgrades)) {
+            foreach($firstgrades as $userid => $info) {
+                $grades[$userid] = $info->grade;
+            }
+        }
     }
-
     // convert grades from percentages and tidy the numbers
     if (!$lesson->practice) {  // dont display practice lessons
         if ($grades) {