. /** * Redirects the user to a default grades import 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/import/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:import', $context); // Retrieve all grade import plugins the current user can access. $importplugins = array_filter(core_component::get_plugin_list('gradeimport'), static function(string $importplugin) use ($context): bool { return has_capability("gradeimport/{$importplugin}:view", $context); }, ARRAY_FILTER_USE_KEY ); if (!empty($importplugins)) { $importplugin = array_key_first($importplugins); $url = new moodle_url("/grade/import/{$importplugin}/index.php", ['id' => $courseid]); redirect($url); } // Otherwise, output the page with a notification stating that there are no available grade import options. $PAGE->set_title(get_string('import', '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('import', 'grades')); echo html_writer::div($OUTPUT->notification(get_string('nogradeimport', 'grades'), 'error'), 'mt-3'); echo $OUTPUT->footer();