MDL-18272, MDL-18271: Conditional availability - grade condition to use percentages not raw grades; use wording rather than >= symbol in form because (apparently) teachers are functionally innumerate. ;)

This commit is contained in:
sam_marshall
2009-02-18 17:50:13 +00:00
parent b9061f5768
commit 7556422816
6 changed files with 51 additions and 17 deletions
+23 -11
View File
@@ -439,8 +439,9 @@ WHERE
* @param bool $grabthelot If true, grabs all scores for current user on
* this course, so that later ones come from cache
* @param int $userid Set if requesting grade for a different user (does
* not use cache)
* @return float Grade score, or false if user does not have a grade yet
* not use cache)
* @return float Grade score as a percentage in range 0-100 (e.g. 100.0
* or 37.21), or false if user does not have a grade yet
*/
private function get_cached_grade_score($gradeitemid,$grabthelot=false,$userid=0) {
global $USER, $DB, $SESSION;
@@ -455,7 +456,7 @@ WHERE
// Get all grades for the current course
$rs=$DB->get_recordset_sql("
SELECT
gi.id,gg.finalgrade
gi.id,gg.finalgrade,gg.rawgrademin,gg.rawgrademax
FROM
{grade_items} gi
LEFT JOIN {grade_grades} gg ON gi.id=gg.itemid AND gg.userid=?
@@ -464,8 +465,11 @@ WHERE
foreach($rs as $record) {
$SESSION->gradescorecache[$record->id]=
is_null($record->finalgrade)
// No grade = false
? false
: $record->finalgrade;
// Otherwise convert grade to percentage
: (($record->finalgrade - $record->rawgrademin) * 100) /
($record->rawgrademax - $record->rawgrademin);
}
$rs->close();
@@ -477,11 +481,14 @@ WHERE
}
} else {
// Just get current grade
$score=$DB->get_field('grade_grades','finalgrade',array(
$record = $DB->get_record('grade_grades', array(
'userid'=>$USER->id,'itemid'=>$gradeitemid));
// Treat the case where row exists but is null, same as
// case where row doesn't exist
if(is_null($score)) {
if ($record && !is_null($record->finalgrade)) {
$score = (($record->finalgrade - $record->rawgrademin) * 100) /
($record->rawgrademax - $record->rawgrademin);
} else {
// Treat the case where row exists but is null, same as
// case where row doesn't exist
$score=false;
}
$SESSION->gradescorecache[$gradeitemid]=$score;
@@ -490,9 +497,14 @@ WHERE
return $SESSION->gradescorecache[$gradeitemid];
} else {
// Not the current user, so request the score individually
$score=$DB->get_field('grade_grades','finalgrade',array(
'userid'=>$userid,'itemid'=>$gradeitemid));
if($score===null) {
$record = $DB->get_record('grade_grades', array(
'userid'=>$userid, 'itemid'=>$gradeitemid));
if ($record && !is_null($record->finalgrade)) {
$score = (($record->finalgrade - $record->rawgrademin) * 100) /
($record->rawgrademax - $record->rawgrademin);
} else {
// Treat the case where row exists but is null, same as
// case where row doesn't exist
$score=false;
}
return $score;