Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Definition of the grade_user_report class is defined** @package gradereport_user* @copyright 2007 Nicolas Connault* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/use core_user\output\myprofile\tree;require_once($CFG->dirroot . '/grade/report/lib.php');require_once($CFG->libdir.'/tablelib.php');define("GRADE_REPORT_USER_HIDE_HIDDEN", 0);define("GRADE_REPORT_USER_HIDE_UNTIL", 1);define("GRADE_REPORT_USER_SHOW_HIDDEN", 2);define("GRADE_REPORT_USER_VIEW_SELF", 1);define("GRADE_REPORT_USER_VIEW_USER", 2);function grade_report_user_settings_definition(&$mform) {global $CFG;$options = [-1 => get_string('default', 'grades'),0 => get_string('hide'),1 => get_string('show')];if (empty($CFG->grade_report_user_showrank)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showrank', get_string('showrank', 'grades'), $options);$mform->addHelpButton('report_user_showrank', 'showrank', 'grades');if (empty($CFG->grade_report_user_showpercentage)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showpercentage', get_string('showpercentage', 'grades'), $options);$mform->addHelpButton('report_user_showpercentage', 'showpercentage', 'grades');if (empty($CFG->grade_report_user_showgrade)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showgrade', get_string('showgrade', 'grades'), $options);if (empty($CFG->grade_report_user_showfeedback)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showfeedback', get_string('showfeedback', 'grades'), $options);if (empty($CFG->grade_report_user_showweight)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showweight', get_string('showweight', 'grades'), $options);if (empty($CFG->grade_report_user_showaverage)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showaverage', get_string('showaverage', 'grades'), $options);$mform->addHelpButton('report_user_showaverage', 'showaverage', 'grades');if (empty($CFG->grade_report_user_showlettergrade)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showlettergrade', get_string('showlettergrade', 'grades'), $options);if (empty($CFG->grade_report_user_showcontributiontocoursetotal)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[$CFG->grade_report_user_showcontributiontocoursetotal]);}$mform->addElement('select', 'report_user_showcontributiontocoursetotal', get_string('showcontributiontocoursetotal', 'grades'), $options);$mform->addHelpButton('report_user_showcontributiontocoursetotal', 'showcontributiontocoursetotal', 'grades');if (empty($CFG->grade_report_user_showrange)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[1]);}$mform->addElement('select', 'report_user_showrange', get_string('showrange', 'grades'), $options);$options = [0 => 0,1 => 1,2 => 2,3 => 3,4 => 4,5 => 5];if (!empty($CFG->grade_report_user_rangedecimals)) {$options[-1] = $options[$CFG->grade_report_user_rangedecimals];}$mform->addElement('select', 'report_user_rangedecimals', get_string('rangedecimals', 'grades'), $options);$options = [-1 => get_string('default', 'grades'),0 => get_string('shownohidden', 'grades'),1 => get_string('showhiddenuntilonly', 'grades'),2 => get_string('showallhidden', 'grades')];if (empty($CFG->grade_report_user_showhiddenitems)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[$CFG->grade_report_user_showhiddenitems]);}$mform->addElement('select', 'report_user_showhiddenitems', get_string('showhiddenitems', 'grades'), $options);$mform->addHelpButton('report_user_showhiddenitems', 'showhiddenitems', 'grades');$options = [-1 => get_string('default', 'grades'),GRADE_REPORT_HIDE_TOTAL_IF_CONTAINS_HIDDEN => get_string('hide'),GRADE_REPORT_SHOW_TOTAL_IF_CONTAINS_HIDDEN => get_string('hidetotalshowexhiddenitems', 'grades'),GRADE_REPORT_SHOW_REAL_TOTAL_IF_CONTAINS_HIDDEN => get_string('hidetotalshowinchiddenitems', 'grades')];if (empty($CFG->grade_report_user_showtotalsifcontainhidden)) {$options[-1] = get_string('defaultprev', 'grades', $options[0]);} else {$options[-1] = get_string('defaultprev', 'grades', $options[$CFG->grade_report_user_showtotalsifcontainhidden]);}$mform->addElement('select', 'report_user_showtotalsifcontainhidden', get_string('hidetotalifhiddenitems', 'grades'), $options);$mform->addHelpButton('report_user_showtotalsifcontainhidden', 'hidetotalifhiddenitems', 'grades');}/*** Profile report callback.** @param object $course The course.* @param object $user The user.* @param boolean $viewasuser True when we are viewing this as the targetted user sees it.*/function grade_report_user_profilereport(object $course, object $user, bool $viewasuser = false) {if (!empty($course->showgrades)) {$context = context_course::instance($course->id);// Fetch the return tracking object.$gpr = new grade_plugin_return(['type' => 'report', 'plugin' => 'user', 'courseid' => $course->id, 'userid' => $user->id]);// Create a report instance.$report = new gradereport_user\report\user($course->id, $gpr, $context, $user->id, $viewasuser);// Print the page.// A css fix to share styles with real report page.echo '<div class="grade-report-user">';if ($report->fill_table()) {echo $report->print_table(true);}echo '</div>';}}/*** Add nodes to myprofile page.** @param tree $tree Tree object* @param stdClass $user user object* @param bool $iscurrentuser* @param null|stdClass $course Course object*/function gradereport_user_myprofile_navigation(tree $tree, stdClass $user, bool $iscurrentuser, ?stdClass $course) {if (empty($course)) {// We want to display these reports under the site context.$course = get_fast_modinfo(SITEID)->get_course();}$usercontext = context_user::instance($user->id);$anyreport = has_capability('moodle/user:viewuseractivitiesreport', $usercontext);// Start capability checks.if ($anyreport || $iscurrentuser) {// Add grade hardcoded grade report if necessary.$gradeaccess = false;$coursecontext = context_course::instance($course->id);if (has_capability('moodle/grade:viewall', $coursecontext)) {// Can view all course grades.$gradeaccess = true;} else if ($course->showgrades) {if ($iscurrentuser && has_capability('moodle/grade:view', $coursecontext)) {// Can view own grades.$gradeaccess = true;} else if (has_capability('moodle/grade:viewall', $usercontext)) {// Can view grades of this user - parent most probably.$gradeaccess = true;} else if ($anyreport) {// Can view grades of this user - parent most probably.$gradeaccess = true;}}if ($gradeaccess) {$url = new moodle_url('/course/user.php', array('mode' => 'grade', 'id' => $course->id, 'user' => $user->id));$node = new core_user\output\myprofile\node('reports', 'grade', get_string('grades'), null, $url);$tree->add_node($node);}}}/*** Returns link to user report for the current element** @param context_course $context Course context* @param int $courseid Course ID* @param array $element An array representing an element in the grade_tree* @param grade_plugin_return $gpr A grade_plugin_return object* @param string $mode Mode - gradeitem or user* @param ?stdClass $templatecontext Template context* @return stdClass|null*/function gradereport_user_get_report_link(context_course $context, int $courseid, array $element,grade_plugin_return $gpr, string $mode, ?stdClass $templatecontext): ?stdClass {global $CFG;if ($mode == 'user') {$reportstring = get_string('userreport_' . $mode, 'gradereport_user');if (!isset($templatecontext)) {$templatecontext = new stdClass();}// FIXME: MDL-52678 This get_capability_info is hacky and we should have an API for inserting grade row links instead.$canseeuserreport = false;if (get_capability_info('gradereport/' . $CFG->grade_profilereport . ':view')) {$canseeuserreport = has_capability('gradereport/' . $CFG->grade_profilereport . ':view', $context);}if ($canseeuserreport) {$url = new moodle_url('/grade/report/' . $CFG->grade_profilereport . '/index.php',['userid' => $element['userid'], 'id' => $courseid]);$gpr->add_url_params($url);$templatecontext->reporturl1 = html_writer::link($url, $reportstring,['class' => 'dropdown-item', 'aria-label' => $reportstring, 'role' => 'menuitem']);return $templatecontext;}}return null;}