diff --git a/config-dist.php b/config-dist.php index ac730124279..5e4ae974da1 100644 --- a/config-dist.php +++ b/config-dist.php @@ -620,6 +620,12 @@ $CFG->admin = 'admin'; // // $CFG->debugsessionlock = 5; // +// Uninstall plugins from CLI only. This stops admins from uninstalling plugins from the graphical admin +// user interface, and forces plugins to be uninstalled from the Command Line tool only, found at +// admin/cli/plugin_uninstall.php. +// +// $CFG->uninstallclionly = true; +// //========================================================================= // 7. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!! //========================================================================= diff --git a/lib/classes/plugin_manager.php b/lib/classes/plugin_manager.php index ce5442f09e8..564bd9e2c54 100644 --- a/lib/classes/plugin_manager.php +++ b/lib/classes/plugin_manager.php @@ -2233,6 +2233,11 @@ class core_plugin_manager { * @return bool */ protected function common_uninstall_check(\core\plugininfo\base $pluginfo) { + global $CFG; + // Check if uninstall is allowed from the GUI. + if (!empty($CFG->uninstallclionly) && (!CLI_SCRIPT)) { + return false; + } if (!$pluginfo->is_uninstall_allowed()) { // The plugin's plugininfo class declares it should not be uninstalled.