. /** * Redirects the user to a default grades export plugin page. * * @package core_grades * @copyright 2021 Mihail Geshoski * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once(__DIR__ . '/../../config.php'); // Course ID. $courseid = required_param('id', PARAM_INT); $PAGE->set_url(new moodle_url('/grade/export/index.php', ['id' => $courseid])); // Basic access checks. if (!$course = $DB->get_record('course', ['id' => $courseid])) { throw new moodle_exception('invalidcourseid', 'error'); } require_login($course); $context = context_course::instance($courseid); require_capability('moodle/grade:export', $context); // Retrieve all grade export plugins the current user can access. $exportplugins = array_filter(core_component::get_plugin_list('gradeexport'), static function(string $exportplugin) use ($context): bool { return has_capability("gradeexport/{$exportplugin}:view", $context); }, ARRAY_FILTER_USE_KEY ); if (!empty($exportplugins)) { $exportplugin = isset($CFG->gradeexport_default, $exportplugins[$CFG->gradeexport_default]) ? $CFG->gradeexport_default : array_key_first($exportplugins); $url = new moodle_url("/grade/export/{$exportplugin}/index.php", ['id' => $courseid]); redirect($url); } // Otherwise, output the page with a notification stating that there are no available grade export options. $PAGE->set_title(get_string('export', 'grades')); $PAGE->set_pagelayout('incourse'); $PAGE->set_heading($course->fullname); $PAGE->set_pagetype('course-view-' . $course->format); echo $OUTPUT->header(); echo $OUTPUT->heading(get_string('export', 'grades')); echo html_writer::div($OUTPUT->notification(get_string('nogradeexport', 'debug'), 'error'), 'mt-3'); echo $OUTPUT->footer();