/** * Can the upgrade of the existing plugin be cancelled? * * Subplugins can be cancelled only via their parent plugin, not separately * (they are considered as implicit requirements if distributed together * with the main package). * * @param \core\plugininfo\base $plugin * @return bool */ public function can_cancel_plugin_upgrade(\core\plugininfo\base $plugin) { global $CFG; if (!empty($CFG->disableupdateautodeploy)) { // Cancelling the plugin upgrade is actually installation of the // previously archived version. return false; } if (empty($plugin) or $plugin->is_standard() or $plugin->is_subplugin() or !$this->is_plugin_folder_removable($plugin->component)) { return false; } if ($plugin->get_status() === self::PLUGIN_STATUS_UPGRADE) { if ($this->get_code_manager()->get_archived_plugin_version($plugin->component, $plugin->versiondb)) { return true; } } return false; }