if ($user_selector) { $renderer = $PAGE->get_renderer('gradereport_overview'); echo $renderer->graded_users_selector('overview', $course, $userid, $currentgroup, false); } if ($currentgroup and !groups_is_member($currentgroup, $userid)) { echo $OUTPUT->notification(get_string('groupusernotmember', 'error')); } else { if ($report->fill_table()) { echo '<br />' . $report->print_table(true); } } } } else { // Non-admins and users viewing from the site context can just see their own report. // Create a report instance $report = new grade_report_overview($userid, $gpr, $context); if (!empty($report->studentcourseids)) { // If the course id matches the site id then we don't have a course context to work with. // Display a standard page. if ($courseid == SITEID) { $PAGE->set_pagelayout('standard'); $header = get_string('grades', 'grades') . ' - ' . fullname($report->user); $PAGE->set_title($header); $PAGE->set_heading(fullname($report->user)); if ($USER->id != $report->user->id) { $PAGE->navigation->extend_for_user($report->user); if ($node = $PAGE->settingsnav->get('userviewingsettings' . $report->user->id)) { $node->forceopen = true; } } else { if ($node = $PAGE->settingsnav->get('usercurrentsettings', navigation_node::TYPE_CONTAINER)) {
/// last selected report session tracking if (!isset($USER->grade_last_report)) { $USER->grade_last_report = array(); } $USER->grade_last_report[$course->id] = 'overview'; /// Build navigation $strgrades = get_string('grades'); $reportname = get_string('modulename', 'gradereport_overview'); $navigation = grade_build_nav(__FILE__, $reportname, $course->id); /// Print header print_header_simple($strgrades . ': ' . $reportname, ': ' . $strgrades, $navigation, '', '', true, '', navmenu($course)); /// Print the plugin selector at the top print_grade_plugin_selector($course->id, 'report', 'overview'); if ($access) { //first make sure we have proper final grades - this must be done before constructing of the grade tree grade_regrade_final_grades($course->id); // Create a report instance $report = new grade_report_overview($userid, $gpr, $context); $gradetotal = 0; $gradesum = 0; // print the page print_heading(get_string('modulename', 'gradereport_overview') . ' - ' . fullname($report->user)); if ($report->fill_table()) { echo $report->print_table(true); } } else { // no access to grades! echo "Can not view grades."; //TODO: localize } print_footer($course);
/** * Trigger the user report events, do the same that the web interface view of the report * * @param int $courseid id of course * @param int $userid id of the user the report belongs to * @return array of warnings and status result * @since Moodle 3.2 * @throws moodle_exception */ public static function view_grade_report($courseid, $userid = 0) { global $USER; $params = self::validate_parameters(self::view_grade_report_parameters(), array('courseid' => $courseid, 'userid' => $userid)); $warnings = array(); $course = get_course($params['courseid']); $context = context_course::instance($course->id); self::validate_context($context); $userid = $params['userid']; if (empty($userid)) { $userid = $USER->id; } else { $user = core_user::get_user($userid, '*', MUST_EXIST); core_user::require_active_user($user); } $systemcontext = context_system::instance(); $personalcontext = context_user::instance($userid); $access = grade_report_overview::check_access($systemcontext, $context, $personalcontext, $course, $userid); if (!$access) { throw new moodle_exception('nopermissiontoviewgrades', 'error'); } grade_report_overview::viewed($context, $course->id, $userid); $result = array(); $result['status'] = true; $result['warnings'] = $warnings; return $result; }
// do not list all users } else { // Only show one user's report $report = new grade_report_overview($userid, $gpr, $context); print_grade_page_head($courseid, 'report', 'overview', get_string('pluginname', 'gradereport_overview') . ' - ' . fullname($report->user)); groups_print_course_menu($course, $gpr->get_return_url('index.php?id=' . $courseid, array('userid' => 0))); if ($user_selector) { $renderer = $PAGE->get_renderer('gradereport_overview'); echo $renderer->graded_users_selector('overview', $course, $userid, $currentgroup, false); } if ($currentgroup and !groups_is_member($currentgroup, $userid)) { echo $OUTPUT->notification(get_string('groupusernotmember', 'error')); } else { if ($report->fill_table()) { echo '<br />' . $report->print_table(true); } } } } else { //Non-admins will see just their own report // Create a report instance $report = new grade_report_overview($userid, $gpr, $context); // print the page print_grade_page_head($courseid, 'report', 'overview', get_string('pluginname', 'gradereport_overview') . ' - ' . fullname($report->user)); if ($report->fill_table()) { echo '<br />' . $report->print_table(true); } } $event = \gradereport_overview\event\grade_report_viewed::create(array('context' => $context, 'courseid' => $courseid, 'relateduserid' => $userid)); $event->trigger(); echo $OUTPUT->footer();
/** * Add nodes to myprofile page. * * @param \core_user\output\myprofile\tree $tree Tree object * @param stdClass $user user object * @param bool $iscurrentuser * @param stdClass $course Course object */ function gradereport_overview_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, $iscurrentuser, $course) { if (empty($course)) { // We want to display these reports under the site context. $course = get_fast_modinfo(SITEID)->get_course(); } $systemcontext = context_system::instance(); $usercontext = context_user::instance($user->id); $coursecontext = context_course::instance($course->id); if (grade_report_overview::check_access($systemcontext, $coursecontext, $usercontext, $course, $user->id)) { $url = new moodle_url('/grade/report/overview/index.php', array('userid' => $user->id)); $node = new core_user\output\myprofile\node('reports', 'grades', get_string('gradesoverview', 'gradereport_overview'), null, $url); $tree->add_node($node); } }