Example #1
0
 /**
  * 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;
 }
Example #2
0
 *
 * @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');
Example #3
0
        }
    }
}
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 {