From a0639c477aa85204ff5a327b473b20b742344027 Mon Sep 17 00:00:00 2001 From: kremsy Date: Fri, 31 Mar 2017 22:32:12 +0200 Subject: [PATCH] added min and max plugin version in plugin install / update --- core/Update/PluginUpdateData.php | 5 +++++ core/Update/PluginUpdateManager.php | 24 ++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/core/Update/PluginUpdateData.php b/core/Update/PluginUpdateData.php index 879a4f7f..266e3f5b 100644 --- a/core/Update/PluginUpdateData.php +++ b/core/Update/PluginUpdateData.php @@ -21,6 +21,8 @@ class PluginUpdateData { public $version = null; public $zipfile = null; public $url = null; + public $minManiaControlVersion = null; + public $maxManiaControlVersion = null; /** * Construct new plugin update data instance @@ -37,6 +39,9 @@ class PluginUpdateData { $this->version = $updateData->currentVersion->version; $this->zipfile = $updateData->currentVersion->zipfile; $this->url = $updateData->currentVersion->url; + + $this->minManiaControlVersion = $updateData->currentVersion->min_mc_version; + $this->maxManiaControlVersion = $updateData->currentVersion->max_mc_version; } } diff --git a/core/Update/PluginUpdateManager.php b/core/Update/PluginUpdateManager.php index a6613f9f..38b14501 100644 --- a/core/Update/PluginUpdateManager.php +++ b/core/Update/PluginUpdateManager.php @@ -55,8 +55,7 @@ class PluginUpdateManager implements CallbackListener, CommandListener, TimerLis * @param Player $player */ public function handle_CheckPluginsUpdate(array $chatCallback, Player $player) { - if (!$this->maniaControl->getAuthenticationManager()->checkPermission($player, UpdateManager::SETTING_PERMISSION_UPDATECHECK) - ) { + if (!$this->maniaControl->getAuthenticationManager()->checkPermission($player, UpdateManager::SETTING_PERMISSION_UPDATECHECK)) { $this->maniaControl->getAuthenticationManager()->sendNotAllowed($player); return; } @@ -151,8 +150,7 @@ class PluginUpdateManager implements CallbackListener, CommandListener, TimerLis * @param Player $player */ public function handle_PluginsUpdate(array $chatCallback, Player $player) { - if (!$this->maniaControl->getAuthenticationManager()->checkPermission($player, UpdateManager::SETTING_PERMISSION_UPDATE) - ) { + if (!$this->maniaControl->getAuthenticationManager()->checkPermission($player, UpdateManager::SETTING_PERMISSION_UPDATE)) { $this->maniaControl->getAuthenticationManager()->sendNotAllowed($player); return; } @@ -241,6 +239,24 @@ class PluginUpdateManager implements CallbackListener, CommandListener, TimerLis * @param bool $update */ private function installPlugin(PluginUpdateData $pluginUpdateData, Player $player = null, $update = false) { + if (ManiaControl::VERSION < $pluginUpdateData->minManiaControlVersion) { + $message = "Your ManiaControl Version v" . ManiaControl::VERSION . " is too old for this Plugin (min Required Version): ' . {$pluginUpdateData->minManiaControlVersion}!"; + if ($player) { + $this->maniaControl->getChat()->sendError($message, $player); + } + Logger::logError($message); + return; + } + + if ($pluginUpdateData->maxManiaControlVersion != -1 && ManiaControl::VERSION > $pluginUpdateData->maxManiaControlVersion) { + $message = "Your ManiaControl Version v" . ManiaControl::VERSION . " is too new for this Plugin (max Version of the Plugin: ' . {$pluginUpdateData->minManiaControlVersion}!"; + if ($player) { + $this->maniaControl->getChat()->sendError($message, $player); + } + Logger::logError($message); + return; + } + $asyncHttpRequest = new AsyncHttpRequest($this->maniaControl, $pluginUpdateData->url); $asyncHttpRequest->setCallable(function ($updateFileContent, $error) use ( &$pluginUpdateData, &$player, &$update