/** * Update activity grades * * @param object $assignment * @param int $userid specific user only, 0 means all */ function assignment_update_grades($assignment, $userid=0, $nullifnone=true) { global $CFG, $DB; require_once($CFG->libdir.'/gradelib.php'); if ($assignment->grade == 0) { assignment_grade_item_update($assignment); } else if ($grades = assignment_get_user_grades($assignment, $userid)) { foreach($grades as $k=>$v) { if ($v->rawgrade == -1) { $grades[$k]->rawgrade = null; } } assignment_grade_item_update($assignment, $grades); } else { assignment_grade_item_update($assignment); } }
/** * Update grades by firing grade_updated event * * @param object $assignment null means all assignments * @param int $userid specific user only, 0 mean all */ function assignment_update_grades($assignment = null, $userid = 0, $nullifnone = true) { global $CFG; if (!function_exists('grade_update')) { //workaround for buggy PHP versions require_once $CFG->libdir . '/gradelib.php'; } if ($assignment != null) { if ($grades = assignment_get_user_grades($assignment, $userid)) { foreach ($grades as $k => $v) { if ($v->rawgrade == -1) { $grades[$k]->rawgrade = null; } } assignment_grade_item_update($assignment); grade_update('mod/assignment', $assignment->courseid, 'mod', 'assignment', $assignment->id, 0, $grades); } } else { $sql = "SELECT a.*, cm.idnumber as cmidnumber, a.course as courseid\n FROM {$CFG->prefix}assignment a, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n WHERE m.name='assignment' AND m.id=cm.module AND cm.instance=a.id"; if ($rs = get_recordset_sql($sql)) { if ($rs->RecordCount() > 0) { while ($assignment = rs_fetch_next_record($rs)) { assignment_grade_item_update($assignment); if ($assignment->grade != 0) { assignment_update_grades($assignment); } } } rs_close($rs); } } }