diff --git a/admin/plugins.php b/admin/plugins.php index d0788b6593d5b..a092e00018942 100644 --- a/admin/plugins.php +++ b/admin/plugins.php @@ -38,9 +38,6 @@ require_once($CFG->libdir . '/pluginlib.php'); require_once($CFG->libdir . '/filelib.php'); -admin_externalpage_setup('pluginsoverview'); -require_capability('moodle/site:config', context_system::instance()); - $fetchremote = optional_param('fetchremote', false, PARAM_BOOL); $updatesonly = optional_param('updatesonly', false, PARAM_BOOL); $contribonly = optional_param('contribonly', false, PARAM_BOOL); @@ -48,13 +45,30 @@ $delete = optional_param('delete', '', PARAM_COMPONENT); $confirmed = optional_param('confirm', false, PARAM_BOOL); -/** @var core_admin_renderer $output */ -$output = $PAGE->get_renderer('core', 'admin'); +// NOTE: do not use admin_externalpage_setup() here because it loads +// full admin tree which is not possible during uninstallation. + +require_login(); +$syscontext = context_system::instance(); +require_capability('moodle/site:config', $syscontext); $pluginman = plugin_manager::instance(); if ($uninstall) { require_sesskey(); + + if (!$confirmed) { + admin_externalpage_setup('pluginsoverview'); + } else { + $PAGE->set_url('/admin/plugins.php'); + $PAGE->set_context($syscontext); + $PAGE->set_pagelayout('maintenance'); + $PAGE->set_popup_notification_allowed(false); + } + + /** @var core_admin_renderer $output */ + $output = $PAGE->get_renderer('core', 'admin'); + $pluginfo = $pluginman->get_plugin_info($uninstall); // Make sure we know the plugin. @@ -105,6 +119,15 @@ if ($delete and $confirmed) { require_sesskey(); + + $PAGE->set_url('/admin/plugins.php'); + $PAGE->set_context($syscontext); + $PAGE->set_pagelayout('maintenance'); + $PAGE->set_popup_notification_allowed(false); + + /** @var core_admin_renderer $output */ + $output = $PAGE->get_renderer('core', 'admin'); + $pluginfo = $pluginman->get_plugin_info($delete); // Make sure we know the plugin. @@ -148,6 +171,11 @@ redirect(new moodle_url('/admin/index.php')); } +admin_externalpage_setup('pluginsoverview'); + +/** @var core_admin_renderer $output */ +$output = $PAGE->get_renderer('core', 'admin'); + $checker = available_update_checker::instance(); // Filtering options.