From 00529d111df030d93ec7ee2b9de97977b37f88f4 Mon Sep 17 00:00:00 2001 From: kremsy Date: Sat, 1 Feb 2014 18:33:06 +0100 Subject: [PATCH] improvements update manager --- application/core/UpdateManager.php | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/application/core/UpdateManager.php b/application/core/UpdateManager.php index 62908fb2..0cdf6cd1 100644 --- a/application/core/UpdateManager.php +++ b/application/core/UpdateManager.php @@ -55,9 +55,9 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener // Register for callbacks - $this->maniaControl->timerManager->registerTimerListening($this, 'handle1Minute', 1000 * 60); + $this->maniaControl->timerManager->registerTimerListening($this, 'hourlyUpdateCheck', 1000 * 60 * 60); $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERJOINED, $this, 'handlePlayerJoined'); - $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'handlePlayerDisconnected'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERDISCONNECTED, $this, 'autoUpdate'); //define Permissions $this->maniaControl->authenticationManager->definePermissionLevel(self::SETTING_PERMISSION_UPDATE, AuthenticationManager::AUTH_LEVEL_ADMIN); @@ -69,11 +69,11 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } /** - * Handle ManiaControl 1Minute callback + * Perform Hourly Update Che * * @param $time */ - public function handle1Minute($time) { + public function hourlyUpdateCheck($time) { $updateCheckEnabled = $this->maniaControl->settingManager->getSetting($this, self::SETTING_ENABLEUPDATECHECK); if (!$updateCheckEnabled) { // Automatic update check disabled @@ -82,9 +82,10 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } return; } + // Only check once per hour $updateInterval = $this->maniaControl->settingManager->getSetting($this, self::SETTING_UPDATECHECK_INTERVAL); - if ($this->lastUpdateCheck > time() - $updateInterval * 3600.) { + if ($this->lastUpdateCheck > time() - $updateInterval * 3600) { return; } $this->lastUpdateCheck = time(); @@ -94,6 +95,8 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener } $this->maniaControl->log('New ManiaControl Version ' . $updateData->version . ' available!'); $this->coreUpdateData = $updateData; + + $this->autoUpdate($time); } /** @@ -113,18 +116,18 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $this->maniaControl->chat->sendInformation('New ManiaControl Version ' . $this->coreUpdateData->version . ' available!', $player->login); } + /** - * Perform automatic update as soon as a the Server is empty + * Perform automatic update as soon as a the Server is empty (also every hour got checked when its empty) * - * @param array $callback + * @param mixed $callback */ - public function handlePlayerDisconnected(array $callback) { - $performBackup = $this->maniaControl->settingManager->getSetting($this, self::SETTING_AUTO_UPDATE); - if (!$performBackup) { + public function autoUpdate($callback) { + $autoUpdate = $this->maniaControl->settingManager->getSetting($this, self::SETTING_AUTO_UPDATE); + if (!$autoUpdate) { return; } - if (count($this->maniaControl->playerManager->getPlayers()) > 0) { return; } @@ -148,6 +151,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $this->maniaControl->restart(); } + /** * Handle //checkupdate command * @@ -175,7 +179,7 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener $releaseTime = strtotime($updateData->release_date); if ($buildDate) { $buildTime = strtotime($buildDate); - if ($buildTime >= $releaseTime) { + if ($buildTime >= $releaseTime) { //FIXME will ever fail, releaseTime > buildTime (because releaseTime "2014-02-01 14:59:49") $this->maniaControl->chat->sendInformation('No new Build available, current build: ' . date("Y-m-d", $buildTime) . '!', $player->login); return; }