]> git.mjollnir.org Git - moodle.git/commitdiff
Forum grades can now be numerical as well (like the other modules).
authormoodler <moodler>
Mon, 25 Aug 2003 12:47:36 +0000 (12:47 +0000)
committermoodler <moodler>
Mon, 25 Aug 2003 12:47:36 +0000 (12:47 +0000)
If so, grades in the gradebook are printed as proper numbers and
contribute to the total of the course.

lib/weblib.php
mod/forum/db/mysql.php
mod/forum/db/mysql.sql
mod/forum/db/postgres7.php
mod/forum/lib.php
mod/forum/mod.html
mod/forum/version.php

index 235ec988883b22671a8e1dde2813d7cad7179a74..0cecd60315a3e88f154b627ca57ad983d08daebd 100644 (file)
@@ -1383,7 +1383,7 @@ function print_time_selector($hour, $minute, $currenttime=0) {
     choose_from_menu($minutes, $minute, $currentdate['minutes'], "");
 }
 
-function print_grade_menu($courseid, $name, $current) {
+function print_grade_menu($courseid, $name, $current, $includenograde=true) {
 /// Prints a grade menu (as part of an existing form) with help
 /// Showing all possible numerical grades and scales
 
@@ -1396,7 +1396,9 @@ function print_grade_menu($courseid, $name, $current) {
     foreach ($scales as $i => $scalename) {
         $grades[-$i] = "$strscale: $scalename";
     }
-    $grades[0] = get_string("nograde");
+    if ($includenograde) {
+        $grades[0] = get_string("nograde");
+    }
     for ($i=100; $i>=1; $i--) {
         $grades[$i] = $i;
     }
index 18725af12fbd83142a052f615b939b4ef79d9f71..e0f2d5c1016428a7b2cbe56f48630479e2acc12e 100644 (file)
@@ -70,6 +70,11 @@ function forum_upgrade($oldversion) {
       table_column("forum", "", "assesstimestart", "integer", "10", "unsigned", "0", "", "assessed");
       table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart");
   }
+
+  if ($oldversion < 2003082502) {
+      table_column("forum", "scale", "scale", "integer", "10", "", "0");
+      execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
+  }
   
   return true;
 
index e1a61200866e6c6dc3441800b01c089738ea842f..ece465b13a4ff3b5f865da13a5378fefd12b9992 100644 (file)
@@ -12,7 +12,7 @@ CREATE TABLE prefix_forum (
   assessed int(10) unsigned NOT NULL default '0',
   assesstimestart int(10) unsigned NOT NULL default '0',
   assesstimefinish int(10) unsigned NOT NULL default '0',
-  scale int(10) unsigned NOT NULL default '0',
+  scale int(10) NOT NULL default '0',
   forcesubscribe tinyint(1) unsigned NOT NULL default '0',
   timemodified int(10) unsigned NOT NULL default '0',
   PRIMARY KEY  (id),
index 81603528219c72cbc43c59a09b883b3cea610042..bc985d952f4f281e0ece0e3fbb50b718d7ce5f04 100644 (file)
@@ -15,6 +15,10 @@ function forum_upgrade($oldversion) {
       table_column("forum", "", "assesstimefinish", "integer", "10", "unsigned", "0", "", "assesstimestart");
   }
 
+  if ($oldversion < 2003082502) {
+      execute_sql("UPDATE {$CFG->prefix}forum SET scale = (- scale)");
+  }
+
   return true;
 
 }
index 5ea63ac11add2244629b00e0b3ba9c440e505d2a..c81417d21e2e34ebb051739092831595d0eb2bc7 100644 (file)
@@ -442,10 +442,7 @@ function forum_grades($forumid) {
     if (!$forum->assessed) {
         return false;
     }
-    if (!$scale = get_record("scale", "id", $forum->scale)) {
-        return false;
-    }
-    $scalemenu = make_menu_from_list($scale->scale);
+    $scalemenu = make_grades_menu($forum->scale);
 
     $currentuser = 0;
     $ratingsuser = array();
@@ -454,8 +451,18 @@ function forum_grades($forumid) {
         foreach ($ratings as $rating) {     // Ordered by user
             if ($currentuser and $rating->userid != $currentuser) {
                 if (!empty($ratingsuser)) {
-                    $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
-                    $return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
+                    if ($forum->scale < 0) {
+                        $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
+                        $return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
+                    } else {
+                        $total = 0;
+                        $count = 0;
+                        foreach ($ratingsuser as $ra) {
+                            $total += $ra;
+                            $count ++;
+                        }
+                        $return->grades[$currentuser] = format_float($total/$count, 2);
+                    }
                 } else {
                     $return->grades[$currentuser] = "";
                 }
@@ -465,8 +472,18 @@ function forum_grades($forumid) {
             $currentuser = $rating->userid;
         }
         if (!empty($ratingsuser)) {
-            $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
-            $return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
+            if ($forum->scale < 0) {
+                $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser);
+                $return->grades[$currentuser] .= "<br />".forum_get_ratings_summary(0, $scalemenu, $ratingsuser);
+            } else {
+                $total = 0;
+                $count = 0;
+                foreach ($ratingsuser as $ra) {
+                    $total += $ra;
+                    $count ++;
+                }
+                $return->grades[$currentuser] = format_float((float)$total/(float)$count, 2);
+            }
         } else {
             $return->grades[$currentuser] = "";
         }
@@ -474,7 +491,11 @@ function forum_grades($forumid) {
         $return->grades = array();
     }
 
-    $return->maxgrade = "";
+    if ($forum->scale < 0) {
+        $return->maxgrade = "";
+    } else {
+        $return->maxgrade = $forum->scale;
+    }
     return $return;
 }
 
@@ -1947,8 +1968,7 @@ function forum_print_discussion($course, $forum, $discussion, $post, $mode) {
 
     $ratings = NULL;
     if ($forum->assessed and !empty($USER->id)) {
-        if ($scale = get_record("scale", "id", $forum->scale)) {
-            $ratings->scale = make_menu_from_list($scale->scale);
+        if ($ratings->scale = make_grades_menu($forum->scale)) {
             $ratings->assesstimestart = $forum->assesstimestart;
             $ratings->assesstimefinish = $forum->assesstimefinish;
             if ($forum->assessed == 2 and !isteacher($course->id)) {
index 096754c3733adba5f3453c72b662b30f6e0b6f35..30ec6db457b9913d592f815584e0f7a689145c45 100644 (file)
             helpbutton("ratings", get_string("allowratings", "forum"), "forum");
             echo "<br />";
 
-            echo get_string("scale").":";
-            print_scale_menu($course->id, "scale", $form->scale);
+            echo get_string("grade").":";
+            print_grade_menu($course->id, "scale", $form->scale, false);
             echo "<br />";
 
             echo "<input name=\"ratingtime\" type=checkbox value=1 ";
index f35a99a5d0f2b16ddef351fe4ce96c8727762d9e..b01b2974ae85d81c19bfe29945eb9700af15d7f9 100644 (file)
@@ -5,7 +5,7 @@
 //  This fragment is called by /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2003082500;
+$module->version  = 2003082502;
 $module->cron     = 60;
 
 ?>