/** * Get emarking grades in a format compatible with the gradebook * * @param * $emarking * @param int $userid * @return array */ function emarking_get_user_grades($emarking, $userid = 0) { global $DB, $CFG; require_once $CFG->dirroot . '/grade/grading/lib.php'; emarking_calculate_grades_users($emarking, $userid); $gradebookgrades = array(); $params = array('emarking' => $emarking->id); if ($userid > 0) { $params['student'] = $userid; } $submissions = $DB->get_records('emarking_submission', $params); foreach ($submissions as $submission) { $gradebookgrade = new stdClass(); $gradebookgrade->userid = $submission->student; $gradebookgrade->datesubmitted = $submission->timecreated; $gradebookgrade->rawgrade = $submission->grade; $gradebookgrade->usermodified = $submission->teacher; $gradebookgrade->dategraded = $submission->timemodified; $gradebookgrades[$submission->student] = $gradebookgrade; } return $gradebookgrades; }
} $url = new moodle_url('/mod/emarking/publish.php', array('id' => $cm->id)); $PAGE->set_pagelayout('incourse'); $PAGE->set_popup_notification_allowed(false); $PAGE->set_url($url); $PAGE->set_context($context); $PAGE->set_course($course); $PAGE->set_cm($cm); $PAGE->set_title(get_string('publishtitle', 'mod_emarking')); $PAGE->set_heading($course->fullname); $PAGE->navbar->add(get_string('publishtitle', 'mod_emarking')); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('publishinggrades', 'mod_emarking')); // Create progress bar $pbar = new progress_bar('publish', 500, true); emarking_calculate_grades_users($emarking); // Count documents ignored and processed $totaldocumentsprocessed = 0; $totaldocumentsignored = 0; $totalsubmissions = count($submissions); foreach ($submissions as $submissionid) { if (!($submission = $DB->get_record('emarking_submission', array('id' => $submissionid)))) { $totaldocumentsignored++; continue; } if (!($student = $DB->get_record('user', array('id' => $submission->student)))) { $totaldocumentsignored++; continue; } if (emarking_multi_create_response_pdf($submission, $student, $context, $cmid)) { $totaldocumentsprocessed++;
/** * Creates or updates grade item for the give emarking instance * Needed by grade_update_mod_grades() in lib/gradelib.php * * @param stdClass $emarking * instance object with extra cmidnumber and modname property * @param null $grades * @return int 0 if ok, error code otherwise */ function emarking_grade_item_update(stdClass $emarking, $grades = null) { global $CFG; require_once $CFG->libdir . '/gradelib.php'; if ($grades == null) { emarking_calculate_grades_users($emarking); } $params = array(); $params['itemname'] = clean_param($emarking->name, PARAM_NOTAGS); $params['gradetype'] = GRADE_TYPE_VALUE; $params['grademax'] = $emarking->grade; $params['grademin'] = $emarking->grademin; if ($grades === 'reset') { $params['reset'] = true; $grades = null; } $ret = grade_update('mod/emarking', $emarking->course, 'mod', 'emarking', $emarking->id, 0, $grades, $params); emarking_publish_all_grades($emarking); return $ret; }