]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-12096 new simple weighted mean aggregation type; merged from MOODLE_18_STABLE
authorskodak <skodak>
Thu, 15 Nov 2007 22:30:01 +0000 (22:30 +0000)
committerskodak <skodak>
Thu, 15 Nov 2007 22:30:01 +0000 (22:30 +0000)
admin/settings/grades.php
grade/edit/tree/category_form.php
grade/lib.php
lang/en_utf8/grades.php
lib/grade/constants.php
lib/grade/grade_category.php

index 74b2fa60e71e1b21fd6dd9db83703643d9c0d4d1..32af0dbdd7e54cce97d49b62c4acf622eab37f73 100644 (file)
@@ -61,6 +61,7 @@ $options = array(GRADE_AGGREGATE_MEAN            =>get_string('aggregatemean', '
                  GRADE_AGGREGATE_MAX             =>get_string('aggregatemax', 'grades'),
                  GRADE_AGGREGATE_MODE            =>get_string('aggregatemode', 'grades'),
                  GRADE_AGGREGATE_WEIGHTED_MEAN   =>get_string('aggregateweightedmean', 'grades'),
+                 GRADE_AGGREGATE_WEIGHTED_MEAN2  =>get_string('aggregateweightedmean2', 'grades'),
                  GRADE_AGGREGATE_EXTRACREDIT_MEAN=>get_string('aggregateextracreditmean', 'grades'),
                  GRADE_AGGREGATE_SUM             =>get_string('aggregatesum', 'grades'));
 $defaults = array('value'=>GRADE_AGGREGATE_MEAN, 'forced'=>false, 'adv'=>false);
index 0a7391809bcc68f75ed0b218becfd3806fb2c6eb..050415db17cde20ea25f97982521033cf0c4656f 100644 (file)
@@ -37,6 +37,7 @@ class edit_category_form extends moodleform {
                          GRADE_AGGREGATE_MAX             =>get_string('aggregatemax', 'grades'),
                          GRADE_AGGREGATE_MODE            =>get_string('aggregatemode', 'grades'),
                          GRADE_AGGREGATE_WEIGHTED_MEAN   =>get_string('aggregateweightedmean', 'grades'),
+                         GRADE_AGGREGATE_WEIGHTED_MEAN2  =>get_string('aggregateweightedmean2', 'grades'),
                          GRADE_AGGREGATE_EXTRACREDIT_MEAN=>get_string('aggregateextracreditmean', 'grades'),
                          GRADE_AGGREGATE_SUM             =>get_string('aggregatesum', 'grades'));
 
index 321558a075b4147cd93757d5e7e8fb80bb95d24a..899af8e9fb7290f92ddd75df078358b3ed1f984c 100644 (file)
@@ -738,6 +738,7 @@ class grade_structure {
                             case GRADE_AGGREGATE_MEAN:
                             case GRADE_AGGREGATE_MEDIAN:
                             case GRADE_AGGREGATE_WEIGHTED_MEAN:
+                            case GRADE_AGGREGATE_WEIGHTED_MEAN2:
                             case GRADE_AGGREGATE_EXTRACREDIT_MEAN:
                                 return '<img src="'.$CFG->pixpath.'/i/agg_mean.gif" class="icon itemicon" alt="'.get_string('aggregation', 'grades').'"/>';
                             case GRADE_AGGREGATE_SUM:
index b4e447575d596c35d47e7cca9165161fa70f8978..bdd5351e42881e0b9accbdb907cb750093082c3c 100644 (file)
@@ -26,6 +26,7 @@ $string['aggregatesubcatshelp'] = 'The aggregation is usually done only with imm
 $string['aggregatesum'] = 'Sum of grades';
 $string['aggregatesonly'] = 'Aggregates only';
 $string['aggregateweightedmean'] = 'Weighted mean of grades';
+$string['aggregateweightedmean2'] = 'Simple weighted mean of grades';
 $string['aggregation'] = 'Aggregation';
 $string['aggregationcoef'] = 'Aggregation coefficient';
 $string['aggregationcoefextra'] = 'Extra credit';
index b35a45c02d2d0919b171d20513c5b60ca4788d5b..6852a1e5d4c3188490b12427be888e80d79b88ef 100644 (file)
@@ -39,6 +39,7 @@ define('GRADE_AGGREGATE_MIN', 4);
 define('GRADE_AGGREGATE_MAX', 6);
 define('GRADE_AGGREGATE_MODE', 8);
 define('GRADE_AGGREGATE_WEIGHTED_MEAN', 10);
+define('GRADE_AGGREGATE_WEIGHTED_MEAN2', 11);
 define('GRADE_AGGREGATE_EXTRACREDIT_MEAN', 12);
 define('GRADE_AGGREGATE_SUM', 13);
 
index e3ff22d124f7281298dc2a8dbb1cf66bd9007199..68a2cdba543cc0445532fcce9206c24b5977e745 100644 (file)
@@ -605,7 +605,7 @@ class grade_category extends grade_object {
                 $agg_grade = reset($modes);
                 break;
 
-            case GRADE_AGGREGATE_WEIGHTED_MEAN: // Weighted average of all existing final grades
+            case GRADE_AGGREGATE_WEIGHTED_MEAN: // Weighted average of all existing final grades, weight specified in coef
                 $weightsum = 0;
                 $sum       = 0;
                 foreach($grade_values as $itemid=>$grade_value) {
@@ -622,6 +622,24 @@ class grade_category extends grade_object {
                 }
                 break;
 
+            case GRADE_AGGREGATE_WEIGHTED_MEAN2: // Weighted average of all existing final grades, weight is the range of grade (ususally grademax)
+                $weightsum = 0;
+                $sum       = 0;
+                foreach($grade_values as $itemid=>$grade_value) {
+                    $weight = $items[$itemid]->grademax - $items[$itemid]->grademin;
+                    if ($weight <= 0) {
+                        continue;
+                    }
+                    $weightsum += $weight;
+                    $sum       += $weight * $grade_value;
+                }
+                if ($weightsum == 0) {
+                    $agg_grade = null;
+                } else {
+                    $agg_grade = $sum / $weightsum;
+                }
+                break;
+
             case GRADE_AGGREGATE_EXTRACREDIT_MEAN: // special average
                 $num = 0;
                 $sum = 0;