mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 16:32:18 +02:00
moving event trigger from update_grade() to grade_item->update_raw_grade(); removing itemnumber generation for now
This commit is contained in:
parent
5ea976e455
commit
c4e4068fa2
@ -374,7 +374,7 @@ class grade_item extends grade_object {
|
||||
$this->idnumber = rand(0,9999999999); // TODO replace rand() with proper random generator
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// If a grade_item already exists with these itemtype, itemmodule and iteminstance
|
||||
// but not itemnumber, generate an itemnumber.
|
||||
if (empty($this->itemnumber) && !empty($this->itemtype) && !empty($this->itemmodule) && !empty($this->iteminstance)) {
|
||||
@ -389,7 +389,7 @@ class grade_item extends grade_object {
|
||||
|
||||
$this->itemnumber = $existing_item->itemnumber + 1;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
$result = parent::insert();
|
||||
|
||||
@ -1037,7 +1037,9 @@ class grade_item extends grade_object {
|
||||
* @param int $feedbackformat
|
||||
* @return mixed grade_grades object if ok, false if error
|
||||
*/
|
||||
function update_raw_grade($userid, $rawgrade=false, $howmodified='manual', $note=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE) {
|
||||
function update_raw_grade($userid, $rawgrade=false, $source='manual', $note=NULL, $feedback=false, $feedbackformat=FORMAT_MOODLE) {
|
||||
global $CFG;
|
||||
require_once($CFG->libdir.'/eventslib.php');
|
||||
|
||||
// calculated grades can not be updated
|
||||
if ($this->is_calculated()) {
|
||||
@ -1098,13 +1100,39 @@ class grade_item extends grade_object {
|
||||
}
|
||||
|
||||
// TODO Handle history recording error, such as displaying a notice, but still return true
|
||||
grade_history::insert_change($userid, $this->id, $grade->rawgrade, $oldgrade, $howmodified, $note);
|
||||
grade_history::insert_change($userid, $this->id, $grade->rawgrade, $oldgrade, $source, $note);
|
||||
|
||||
// This grade item needs update
|
||||
$this->force_regrading();
|
||||
|
||||
if ($result) {
|
||||
|
||||
// trigger grade_updated event notification
|
||||
$eventdata = new object();
|
||||
|
||||
$eventdata->source = $source;
|
||||
$eventdata->itemid = $this->id;
|
||||
$eventdata->courseid = $this->courseid;
|
||||
$eventdata->itemtype = $this->itemtype;
|
||||
$eventdata->itemmodule = $this->itemmodule;
|
||||
$eventdata->iteminstance = $this->iteminstance;
|
||||
$eventdata->itemnumber = $this->itemnumber;
|
||||
$eventdata->idnumber = $this->idnumber;
|
||||
$eventdata->userid = $grade->userid;
|
||||
$eventdata->rawgrade = $grade->rawgrade;
|
||||
|
||||
// load existing text annotation
|
||||
if ($grade_text = $grade->load_text()) {
|
||||
$eventdata->feedback = $grade_text->feedback;
|
||||
$eventdata->feedbackformat = $grade_text->feedbackformat;
|
||||
$eventdata->information = $grade_text->information;
|
||||
$eventdata->informationformat = $grade_text->informationformat;
|
||||
}
|
||||
|
||||
events_trigger('grade_updated', $eventdata);
|
||||
|
||||
return $grade;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
@ -90,12 +90,15 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
|
||||
// only following grade_item properties can be changed in this function
|
||||
$allowed = array('itemname', 'idnumber', 'gradetype', 'grademax', 'grademin', 'scaleid', 'multfactor', 'plusfactor', 'deleted');
|
||||
|
||||
// grade item identification
|
||||
$params = compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber');
|
||||
|
||||
if (is_null($courseid) or is_null($itemtype)) {
|
||||
debugging('Missing courseid or itemtype');
|
||||
return GRADE_UPDATE_FAILED;
|
||||
}
|
||||
|
||||
if (!$grade_items = grade_item::fetch_all(compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber'))) {
|
||||
if (!$grade_items = grade_item::fetch_all($params)) {
|
||||
// create a new one
|
||||
$grade_item = false;
|
||||
|
||||
@ -104,14 +107,12 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
|
||||
unset($grade_items); //release memory
|
||||
|
||||
} else {
|
||||
|
||||
debugging('Found more than one grade item');
|
||||
return GRADE_UPDATE_MULTIPLE;
|
||||
}
|
||||
|
||||
/// Create or update the grade_item if needed
|
||||
if (!$grade_item) {
|
||||
$params = compact('courseid', 'itemtype', 'itemmodule', 'iteminstance', 'itemnumber');
|
||||
if ($itemdetails) {
|
||||
$itemdetails = (array)$itemdetails;
|
||||
|
||||
@ -217,36 +218,9 @@ function grade_update($source, $courseid, $itemtype, $itemmodule, $iteminstance,
|
||||
}
|
||||
|
||||
// update or insert the grade
|
||||
$grade = $grade_item->update_raw_grade($userid, $rawgrade, $source, null, $feedback, $feedbackformat);
|
||||
|
||||
if (!$grade) {
|
||||
if (!$grade_item->update_raw_grade($userid, $rawgrade, $source, null, $feedback, $feedbackformat)) {
|
||||
$failed = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
// trigger grade_updated event notification
|
||||
$eventdata = new object();
|
||||
|
||||
$eventdata->source = $source;
|
||||
$eventdata->itemid = $grade_item->id;
|
||||
$eventdata->courseid = $grade_item->courseid;
|
||||
$eventdata->itemtype = $grade_item->itemtype;
|
||||
$eventdata->itemmodule = $grade_item->itemmodule;
|
||||
$eventdata->iteminstance = $grade_item->iteminstance;
|
||||
$eventdata->itemnumber = $grade_item->itemnumber;
|
||||
$eventdata->idnumber = $grade_item->idnumber;
|
||||
$eventdata->userid = $grade->userid;
|
||||
$eventdata->rawgrade = $grade->rawgrade;
|
||||
|
||||
// load existing text annotation
|
||||
if ($grade_text = $grade->load_text()) {
|
||||
$eventdata->feedback = $grade_text->feedback;
|
||||
$eventdata->feedbackformat = $grade_text->feedbackformat;
|
||||
$eventdata->information = $grade_text->information;
|
||||
$eventdata->informationformat = $grade_text->informationformat;
|
||||
}
|
||||
|
||||
events_trigger('grade_updated', $eventdata);
|
||||
}
|
||||
|
||||
if (!$failed) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user