From 9de5c340c3d016881abec506404d282a3699c217 Mon Sep 17 00:00:00 2001 From: Max Klaversma Date: Wed, 16 Apr 2014 01:38:28 +0200 Subject: [PATCH] Added update all button on pluginmenu --- application/core/Plugins/PluginMenu.php | 12 ++++++++++ application/core/Update/UpdateManager.php | 29 +++++++++++++++++++---- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/application/core/Plugins/PluginMenu.php b/application/core/Plugins/PluginMenu.php index a359c454..ef6c2384 100644 --- a/application/core/Plugins/PluginMenu.php +++ b/application/core/Plugins/PluginMenu.php @@ -39,6 +39,7 @@ class PluginMenu implements CallbackListener, ConfiguratorMenu, ManialinkPageAns const ACTION_SETTING_BOOL = 'PluginMenuActionBoolSetting.'; const ACTION_BACK_TO_PLUGINS = 'PluginMenu.BackToPlugins'; const ACTION_PREFIX_UPDATEPLUGIN = 'PluginMenu.Update.'; + const ACTION_UPDATEPLUGINS = 'PluginMenu.Update.All'; const SETTING_PERMISSION_CHANGE_PLUGIN_SETTINGS = 'Change Plugin Settings'; /* @@ -334,6 +335,17 @@ class PluginMenu implements CallbackListener, ConfiguratorMenu, ManialinkPageAns } } + $numberOfOutdated = $this->maniaControl->updateManager->getNumberOfOutdatedPlugins(); + $updatePluginsButton = new Label_Button(); + $frame->add($updatePluginsButton); + $updatePluginsButton->setHAlign(Control::RIGHT); + $updatePluginsButton->setX($width * 0.1); + $updatePluginsButton->setY(-35.5); + $updatePluginsButton->setZ(2); + $updatePluginsButton->setStyle($updatePluginsButton::STYLE_CardButtonSmall); + $updatePluginsButton->setText('Update '.$numberOfOutdated.' plugin(s)'); + $updatePluginsButton->setAction(self::ACTION_UPDATEPLUGINS); + return $frame; } diff --git a/application/core/Update/UpdateManager.php b/application/core/Update/UpdateManager.php index 15d3a156..23a35596 100644 --- a/application/core/Update/UpdateManager.php +++ b/application/core/Update/UpdateManager.php @@ -249,10 +249,14 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener if($update) { $pluginClass = substr($actionId, strlen(PluginMenu::ACTION_PREFIX_UPDATEPLUGIN)); - $newUpdate = $this->checkPluginUpdate($pluginClass); - if($newUpdate != false) { - $newUpdate->pluginClass = $pluginClass; - $this->updatePlugin($newUpdate, $player, true); + if($pluginClass == 'All') { + $this->checkPluginsUpdate($player); + } else { + $newUpdate = $this->checkPluginUpdate($pluginClass); + if($newUpdate != false) { + $newUpdate->pluginClass = $pluginClass; + $this->updatePlugin($newUpdate, $player, true); + } } } } @@ -345,6 +349,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener /** * Checks if there are outdated plugins active. + * @param Player $player */ public function checkPluginsUpdate(Player $player = null) { $this->maniaControl->log('[UPDATE] Checking plugins for newer versions ...'); @@ -376,6 +381,22 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } } + /** + * Returns the number of outdated plugins active. + * @return int + */ + public function getNumberOfOutdatedPlugins() { + $number = 0; + foreach ($this->maniaControl->pluginManager->getPluginClasses() as $pluginClass) { + $pluginData = $this->checkPluginUpdate($pluginClass); + if ($pluginData != false) { + $number++; + } + } + + return $number; + } + /** * Check given Plugin Class for Update *