/** * Get the given user courses final grades * * @param int $userid get grades for this user (optional, default current) * * @return array the grades tables * @since Moodle 3.2 */ public static function get_course_grades($userid = 0) { global $USER; $warnings = array(); // Validate the parameter. $params = self::validate_parameters(self::get_course_grades_parameters(), array('userid' => $userid)); $userid = $params['userid']; if (empty($userid)) { $userid = $USER->id; } $systemcontext = context_system::instance(); self::validate_context($systemcontext); if ($USER->id != $userid) { // We must check if the current user can view other users grades. $user = core_user::get_user($userid, '*', MUST_EXIST); core_user::require_active_user($user); require_capability('moodle/grade:viewall', $systemcontext); } // We need the site course, and course context. $course = get_course(SITEID); $context = context_course::instance($course->id); // Force a regrade if required. grade_regrade_final_grades_if_required($course); // Get the course final grades now. $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'overview', 'courseid' => $course->id, 'userid' => $userid)); $report = new grade_report_overview($userid, $gpr, $context); $coursesgrades = $report->setup_courses_data(true); $grades = array(); foreach ($coursesgrades as $coursegrade) { $gradeinfo = array('courseid' => $coursegrade['course']->id, 'grade' => grade_format_gradevalue($coursegrade['finalgrade'], $coursegrade['courseitem'], true), 'rawgrade' => $coursegrade['finalgrade']); if (isset($coursegrade['rank'])) { $gradeinfo['rank'] = $coursegrade['rank']; } $grades[] = $gradeinfo; } $result = array(); $result['grades'] = $grades; $result['warnings'] = $warnings; return $result; }
* * @param int $courseid The course ID * @param array $originalweights The weights before the regrade * @param int $weightsadjusted Whether weights have been adjusted * @return moodle_url A URL to redirect to after regrading when a progress bar is displayed. */ $grade_edit_tree_index_checkweights = function () use($courseid, $originalweights, &$weightsadjusted) { global $PAGE; $alteredweights = grade_helper::fetch_all_natural_weights_for_course($courseid); if (array_diff($originalweights, $alteredweights)) { $weightsadjusted = 1; return new moodle_url($PAGE->url, array('weightsadjusted' => $weightsadjusted)); } return $PAGE->url; }; if (grade_regrade_final_grades_if_required($course, $grade_edit_tree_index_checkweights)) { $recreatetree = true; } print_grade_page_head($courseid, 'settings', 'setup', get_string('gradebooksetup', 'grades')); // Print Table of categories and items echo $OUTPUT->box_start('gradetreebox generalbox'); echo '<form id="gradetreeform" method="post" action="' . $returnurl . '">'; echo '<div>'; echo '<input type="hidden" name="sesskey" value="' . sesskey() . '" />'; //did we update something in the db and thus invalidate $grade_edit_tree? if ($recreatetree) { $grade_edit_tree = new grade_edit_tree($gtree, $movingeid, $gpr); } // Check to see if we have a normalisation message to send. if ($weightsadjusted) { echo $OUTPUT->notification(get_string('weightsadjusted', 'grades'), 'notifymessage');
} } } if (!$access) { // no access to grades! print_error('nopermissiontoviewgrades', 'error', $CFG->wwwroot . '/course/view.php?id=' . $courseid); } /// return tracking object $gpr = new grade_plugin_return(array('type' => 'report', 'plugin' => 'overview', 'courseid' => $course->id, 'userid' => $userid)); /// last selected report session tracking if (!isset($USER->grade_last_report)) { $USER->grade_last_report = array(); } $USER->grade_last_report[$course->id] = 'overview'; // First make sure we have proper final grades. grade_regrade_final_grades_if_required($course); if (has_capability('moodle/grade:viewall', $context) && $courseid != SITEID) { // Please note this would be extremely slow if we wanted to implement this properly for all teachers. $groupmode = groups_get_course_groupmode($course); // Groups are being used $currentgroup = groups_get_course_group($course, true); if (!$currentgroup) { // To make some other functions work better later $currentgroup = NULL; } $isseparategroups = ($course->groupmode == SEPARATEGROUPS and !has_capability('moodle/site:accessallgroups', $context)); if ($isseparategroups and !$currentgroup) { // no separate group access, can view only self $userid = $USER->id; $user_selector = false; } else {