From: moodler Date: Mon, 25 Aug 2003 12:47:36 +0000 (+0000) Subject: Forum grades can now be numerical as well (like the other modules). X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=d6bdd9d5e9ad95e13510f1b71a6cf953c16b95ff;p=moodle.git Forum grades can now be numerical as well (like the other modules). If so, grades in the gradebook are printed as proper numbers and contribute to the total of the course. --- diff --git a/lib/weblib.php b/lib/weblib.php index 235ec98888..0cecd60315 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -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; } diff --git a/mod/forum/db/mysql.php b/mod/forum/db/mysql.php index 18725af12f..e0f2d5c101 100644 --- a/mod/forum/db/mysql.php +++ b/mod/forum/db/mysql.php @@ -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; diff --git a/mod/forum/db/mysql.sql b/mod/forum/db/mysql.sql index e1a6120086..ece465b13a 100644 --- a/mod/forum/db/mysql.sql +++ b/mod/forum/db/mysql.sql @@ -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), diff --git a/mod/forum/db/postgres7.php b/mod/forum/db/postgres7.php index 8160352821..bc985d952f 100644 --- a/mod/forum/db/postgres7.php +++ b/mod/forum/db/postgres7.php @@ -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; } diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 5ea63ac11a..c81417d21e 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -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] .= "
".forum_get_ratings_summary(0, $scalemenu, $ratingsuser); + if ($forum->scale < 0) { + $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser); + $return->grades[$currentuser] .= "
".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] .= "
".forum_get_ratings_summary(0, $scalemenu, $ratingsuser); + if ($forum->scale < 0) { + $return->grades[$currentuser] = forum_get_ratings_mean(0, $scalemenu, $ratingsuser); + $return->grades[$currentuser] .= "
".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)) { diff --git a/mod/forum/mod.html b/mod/forum/mod.html index 096754c373..30ec6db457 100644 --- a/mod/forum/mod.html +++ b/mod/forum/mod.html @@ -109,8 +109,8 @@ helpbutton("ratings", get_string("allowratings", "forum"), "forum"); echo "
"; - 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 "
"; echo "version = 2003082500; +$module->version = 2003082502; $module->cron = 60; ?>