And the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
| grade item 1 | - | 75.00 | 0–100 | 75.00 % | - |
- | Calc cat totalInclude empty grades. | 100.00 % | 37.50 | 0–50 | 75.00 % | - |
- | Course total | - | 37.50 | 0–50 | 75.00 % | - |
+ | Calc cat totalInclude empty grades. | 100.00 % | 37.50 | 0–40 | 93.75 % | - |
+ | Course total | - | 37.50 | 0–40 | 93.75 % | - |
And I select "Student 2" from the "Select all or one user" singleselect
And the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
And I select "Student 1" from the "Select all or one user" singleselect
And the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
- | grade item 1 | 66.67 % | 75.00 | 0–100 | 75.00 % | 50.00 % |
- | calc item | 33.33 % | 37.50 | 0–50 | 75.00 % | 25.00 % |
- | Course total | - | 112.50 | 0–150 | 75.00 % | - |
+ | grade item 1 | 71.43 % | 75.00 | 0–100 | 75.00 % | 53.57 % |
+ | calc item | 28.57 % | 37.50 | 0–40 | 93.75 % | 26.79 % |
+ | Course total | - | 112.50 | 0–140 | 80.36 % | - |
And I select "Student 2" from the "Select all or one user" singleselect
And the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
And I select "Student 1" from the "Select all or one user" singleselect
Then the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
- | MI 1 | 20.00 % | 75.00 | 0–100 | 75.00 % | 15.00 % |
- | MI 2 | 20.00 % | 25.00 | 0–100 | 25.00 % | 5.00 % |
- | MI 3 | 50.00 % | 50.00 | 0–100 | 50.00 % | 10.00 % |
- | MI 4 | 50.00 % | 100.00 | 0–100 | 100.00 % | 20.00 % |
- | MI 5 | 20.00 % | 150.00 | 0–100 | 100.00 % | 30.00 % |
- | CAT1 total | 40.00 % | 150.00 | 0–200 | 75.00 % | - |
- | Course total | - | 400.00 | 0–500 | 80.00 % | - |
+ | MI 1 | 16.67 % | 75.00 | 0–100 | 75.00 % | 12.50 % |
+ | MI 2 | 16.67 % | 25.00 | 0–100 | 25.00 % | 4.17 % |
+ | MI 3 | 50.00 % | 50.00 | 0–100 | 50.00 % | 8.33 % |
+ | MI 4 | 50.00 % | 100.00 | 0–100 | 100.00 % | 16.67 % |
+ | MI 5 | 33.33 % | 150.00 | 0–200 | 75.00 % | 25.00 % |
+ | CAT1 total | 33.33 % | 150.00 | 0–200 | 75.00 % | - |
+ | Course total | - | 400.00 | 0–600 | 66.67 % | - |
And I select "Student 2" from the "Select all or one user" singleselect
And the following should exist in the "user-grade" table:
| Grade item | Calculated weight | Grade | Range | Percentage | Contribution to course total |
- | MI 1 | 33.33 % | 20.00 | 0–100 | 20.00 % | 6.67 % |
+ | MI 1 | 25.00 % | 20.00 | 0–100 | 20.00 % | 5.00 % |
| MI 2 | 0.00 % | - | 0–100 | - | 0.00 % |
- | MI 3 | 100.00 % | 10.00 | 0–100 | 10.00 % | 3.33 % |
+ | MI 3 | 100.00 % | 10.00 | 0–100 | 10.00 % | 2.50 % |
| MI 4 | 0.00 % | - | 0–100 | - | 0.00 % |
- | MI 5 | 33.33 % | 30.00 | 0–100 | 30.00 % | 10.00 % |
- | CAT1 total | 33.33 % | 10.00 | 0–100 | 10.00 % | - |
- | Course total | - | 60.00 | 0–300 | 20.00 % | - |
+ | MI 5 | 50.00 % | 30.00 | 0–200 | 15.00 % | 7.50 % |
+ | CAT1 total | 25.00 % | 10.00 | 0–100 | 10.00 % | - |
+ | Course total | - | 60.00 | 0–400 | 15.00 % | - |
// normalize
$grade->finalgrade = $this->bounded_grade($result);
}
-
}
- // update in db if changed
- if (grade_floats_different($grade->finalgrade, $oldfinalgrade)) {
- $grade->timemodified = time();
- $success = $grade->update('compute');
+ // Only run through this code if the gradebook isn't frozen.
+ if ($gradebookcalculationsfreeze && (int)$gradebookcalculationsfreeze <= 20150627) {
+ // Update in db if changed.
+ if (grade_floats_different($grade->finalgrade, $oldfinalgrade)) {
+ $grade->timemodified = time();
+ $success = $grade->update('compute');
- // If successful trigger a user_graded event.
- if ($success) {
- \core\event\user_graded::create_from_grade($grade)->trigger();
+ // If successful trigger a user_graded event.
+ if ($success) {
+ \core\event\user_graded::create_from_grade($grade)->trigger();
+ }
+ }
+ } else {
+ // Update in db if changed.
+ if (grade_floats_different($grade->finalgrade, $oldfinalgrade) || $rawminandmaxchanged) {
+ $grade->timemodified = time();
+ $success = $grade->update('compute');
+
+ // If successful trigger a user_graded event.
+ if ($success) {
+ \core\event\user_graded::create_from_grade($grade)->trigger();
+ }
}
}