/** * Update activity grades. * * @param stdClass $sepl database record * @param int $userid specific user only, 0 means all * @param bool $nullifnone - not used */ function sepl_update_grades($sepl, $userid = 0, $nullifnone = true) { global $CFG; require_once $CFG->libdir . '/gradelib.php'; if ($sepl->grade == 0) { sepl_grade_item_update($sepl); } else { if ($grades = sepl_get_user_grades($sepl, $userid)) { foreach ($grades as $k => $v) { if ($v->rawgrade == -1) { $grades[$k]->rawgrade = null; } } sepl_grade_item_update($sepl, $grades); } else { sepl_grade_item_update($sepl); } } }
/** * Update grades in the gradebook. * * @param mixed $submission stdClass|null * @param mixed $grade stdClass|null * @return bool */ protected function gradebook_item_update($submission = null, $grade = null) { global $CFG; require_once $CFG->dirroot . '/mod/sepl/lib.php'; // Do not push grade to gradebook if blind marking is active as // the gradebook would reveal the students. if ($this->is_blind_marking()) { return false; } // If marking workflow is enabled and grade is not released then remove any grade that may exist in the gradebook. if ($this->get_instance()->markingworkflow && !empty($grade) && $this->get_grading_status($grade->userid) != ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) { // Remove the grade (if it exists) from the gradebook as it is not 'final'. $grade->grade = -1; $grade->feedbacktext = ''; } if ($submission != null) { if ($submission->userid == 0) { // This is a group submission update. $team = groups_get_members($submission->groupid, 'u.id'); foreach ($team as $member) { $membersubmission = clone $submission; $membersubmission->groupid = 0; $membersubmission->userid = $member->id; $this->gradebook_item_update($membersubmission, null); } return; } $gradebookgrade = $this->convert_submission_for_gradebook($submission); } else { $gradebookgrade = $this->convert_grade_for_gradebook($grade); } // Grading is disabled, return. if ($this->grading_disabled($gradebookgrade['userid'])) { return false; } $sepl = clone $this->get_instance(); $sepl->cmidnumber = $this->get_course_module()->idnumber; // Set sepl gradebook feedback plugin status (enabled and visible). $sepl->gradefeedbackenabled = $this->is_gradebook_feedback_enabled(); return sepl_grade_item_update($sepl, $gradebookgrade) == GRADE_UPDATE_OK; }