Skip to content

Commit

Permalink
MDL-40697 core_grades: trigger the user_graded event
Browse files Browse the repository at this point in the history
  • Loading branch information
mdjnelson committed Oct 8, 2014
1 parent c09e6fa commit acd25c1
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 5 deletions.
21 changes: 18 additions & 3 deletions lib/grade/grade_category.php
Expand Up @@ -628,7 +628,12 @@ private function aggregate_grades($userid,
$grade->finalgrade = null;

if (!is_null($oldfinalgrade)) {
$grade->update('aggregation');
$success = $grade->update('aggregation');

// If successful trigger a user_graded event.
if ($success) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
}
$dropped = $grade_values;
$this->set_usedinaggregation($userid, $usedweights, $novalue, $dropped, $extracredit);
Expand Down Expand Up @@ -707,7 +712,12 @@ private function aggregate_grades($userid,
$grade->finalgrade = null;

if (!is_null($oldfinalgrade)) {
$grade->update('aggregation');
$success = $grade->update('aggregation');

// If successful trigger a user_graded event.
if ($success) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
}
$this->set_usedinaggregation($userid, $usedweights, $novalue, $dropped, $extracredit);
return;
Expand Down Expand Up @@ -744,7 +754,12 @@ private function aggregate_grades($userid,
if (grade_floats_different($grade->finalgrade, $oldfinalgrade) ||
grade_floats_different($grade->rawgrademax, $oldrawgrademax) ||
grade_floats_different($grade->rawgrademin, $oldrawgrademin)) {
$grade->update('aggregation');
$success = $grade->update('aggregation');

// If successful trigger a user_graded event.
if ($success) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
}

$this->set_usedinaggregation($userid, $usedweights, $novalue, $dropped, $extracredit);
Expand Down
33 changes: 31 additions & 2 deletions lib/grade/grade_item.php
Expand Up @@ -719,7 +719,13 @@ public function regrade_final_grades($userid=null) {
$grade->finalgrade = $this->adjust_raw_grade($grade->rawgrade, $grade->rawgrademin, $grade->rawgrademax);

if (grade_floats_different($grade_record->finalgrade, $grade->finalgrade)) {
if (!$grade->update('system')) {
$success = $grade->update('system');

// If successful trigger a user_graded event.
if ($success) {
$grade->load_grade_item();
\core\event\user_graded::create_from_grade($grade)->trigger();
} else {
$result = "Internal error updating final grade";
}
}
Expand Down Expand Up @@ -1606,12 +1612,21 @@ public function update_final_grade($userid, $finalgrade=false, $source=NULL, $fe
$grade->timemodified = time(); // hack alert - date graded
$result = (bool)$grade->insert($source);

// If the grade insert was successful and the final grade was not null then trigger a user_graded event.
if ($result && !is_null($grade->finalgrade)) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
} else if (grade_floats_different($grade->finalgrade, $oldgrade->finalgrade)
or $grade->feedback !== $oldgrade->feedback
or $grade->feedbackformat != $oldgrade->feedbackformat
or ($oldgrade->overridden == 0 and $grade->overridden > 0)) {
$grade->timemodified = time(); // hack alert - date graded
$result = $grade->update($source);

// If the grade update was successful and the actual grade has changed then trigger a user_graded event.
if ($result && grade_floats_different($grade->finalgrade, $oldgrade->finalgrade)) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
} else {
// no grade change
return $result;
Expand Down Expand Up @@ -1757,6 +1772,10 @@ public function update_raw_grade($userid, $rawgrade=false, $source=NULL, $feedba
if (empty($grade->id)) {
$result = (bool)$grade->insert($source);

// If the grade insert was successful and the final grade was not null then trigger a user_graded event.
if ($result && !is_null($grade->finalgrade)) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
} else if (grade_floats_different($grade->finalgrade, $oldgrade->finalgrade)
or grade_floats_different($grade->rawgrade, $oldgrade->rawgrade)
or grade_floats_different($grade->rawgrademin, $oldgrade->rawgrademin)
Expand All @@ -1768,6 +1787,11 @@ public function update_raw_grade($userid, $rawgrade=false, $source=NULL, $feedba
or $grade->timemodified != $oldgrade->timemodified // part of hack above
) {
$result = $grade->update($source);

// If the grade update was successful and the actual grade has changed then trigger a user_graded event.
if ($result && grade_floats_different($grade->finalgrade, $oldgrade->finalgrade)) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
} else {
return $result;
}
Expand Down Expand Up @@ -1971,7 +1995,12 @@ public function use_formula($userid, $params, $useditems, $oldgrade) {
// update in db if changed
if (grade_floats_different($grade->finalgrade, $oldfinalgrade)) {
$grade->timemodified = time();
$grade->update('compute');
$success = $grade->update('compute');

// If successful trigger a user_graded event.
if ($success) {
\core\event\user_graded::create_from_grade($grade)->trigger();
}
}

if ($result !== false) {
Expand Down

0 comments on commit acd25c1

Please sign in to comment.