From 706f30636e64405aaf6b65fcbb50431f3a5cce9b Mon Sep 17 00:00:00 2001 From: kremsy Date: Sat, 1 Mar 2014 12:18:42 +0100 Subject: [PATCH] small fixes --- .../core/Manialinks/ManialinkManager.php | 10 +- application/core/Players/PlayerManager.php | 2 +- application/plugins/LocalRecords.php | 154 ++++++++---------- 3 files changed, 80 insertions(+), 86 deletions(-) diff --git a/application/core/Manialinks/ManialinkManager.php b/application/core/Manialinks/ManialinkManager.php index 78345222..78ce0195 100644 --- a/application/core/Manialinks/ManialinkManager.php +++ b/application/core/Manialinks/ManialinkManager.php @@ -136,10 +136,12 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener return $this->maniaControl->client->sendDisplayManialinkPage(null, $manialinkText, $timeout, $hideOnClick); } if (is_string($logins)) { - return $this->maniaControl->client->sendDisplayManialinkPage($logins, $manialinkText, $timeout, $hideOnClick); + $success = $this->maniaControl->client->sendDisplayManialinkPage($logins, $manialinkText, $timeout, $hideOnClick); + return $success; } if ($logins instanceof Player) { - return $this->maniaControl->client->sendDisplayManialinkPage($logins->login, $manialinkText, $timeout, $hideOnClick); + $success = $this->maniaControl->client->sendDisplayManialinkPage($logins->login, $manialinkText, $timeout, $hideOnClick); + return $success; } if (is_array($logins)) { $success = true; @@ -153,6 +155,10 @@ class ManialinkManager implements ManialinkPageAnswerListener, CallbackListener return $success; } } catch(Exception $e) { + if($e->getMessage() == "Login unknown."){ + return false; + } + $this->maniaControl->errorHandler->triggerDebugNotice("Exception while sending Manialink: " . $e->getMessage()); // TODO: only possible valid exception should be "wrong login" - throw others (like connection error) return false; } diff --git a/application/core/Players/PlayerManager.php b/application/core/Players/PlayerManager.php index 7261c3f2..561b9487 100644 --- a/application/core/Players/PlayerManager.php +++ b/application/core/Players/PlayerManager.php @@ -202,7 +202,7 @@ class PlayerManager implements CallbackListener { $player->updateSpectatorStatus($callback[1][0]["SpectatorStatus"]); //Check if Player finished joining the game - if ($player->hasJoinedGame && !$prevJoinState) { + if($player->hasJoinedGame && !$prevJoinState){ if ($this->maniaControl->settingManager->getSetting($this, self::SETTING_JOIN_LEAVE_MESSAGES) && !$player->isFakePlayer()) { $string = array(0 => '$0f0Player', 1 => '$0f0Moderator', 2 => '$0f0Admin', 3 => '$0f0SuperAdmin', 4 => '$0f0MasterAdmin'); $chatMessage = '$s$0f0' . $string[$player->authLevel] . ' $fff' . $player->nickname . '$z$s$0f0 Nation:$fff ' . $player->getCountry() . ' $z$s$0f0joined!'; diff --git a/application/plugins/LocalRecords.php b/application/plugins/LocalRecords.php index 9310ab1e..0a5b47e6 100644 --- a/application/plugins/LocalRecords.php +++ b/application/plugins/LocalRecords.php @@ -1,19 +1,19 @@ maniaControl = $maniaControl; $this->initTables(); - + // Init settings $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_TITLE, 'Local Records'); $this->maniaControl->settingManager->initSetting($this, self::SETTING_WIDGET_POSX, -139.); @@ -76,19 +74,18 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $this->maniaControl->settingManager->initSetting($this, self::SETTING_NOTIFY_ONLY_DRIVER, false); $this->maniaControl->settingManager->initSetting($this, self::SETTING_NOTIFY_BEST_RECORDS, -1); $this->maniaControl->settingManager->initSetting($this, self::SETTING_ADJUST_OUTER_BORDER, false); - + // Register for callbacks $this->maniaControl->timerManager->registerTimerListening($this, 'handle1Second', 1000); $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_AFTERINIT, $this, 'handleAfterInit'); $this->maniaControl->callbackManager->registerCallbackListener(MapManager::CB_BEGINMAP, $this, 'handleMapBegin'); - $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERFINISH, $this, - 'handlePlayerFinish'); - + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_TM_PLAYERFINISH, $this, 'handlePlayerFinish'); + $this->maniaControl->callbackManager->registerCallbackListener(PlayerManager::CB_PLAYERCONNECT, $this, 'handlePlayerConnect'); + return true; } /** - * * @see \ManiaControl\Plugins\Plugin::unload() */ public function unload() { @@ -102,7 +99,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { */ private function initTables() { $mysqli = $this->maniaControl->database->mysqli; - $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_RECORDS . "` ( + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_RECORDS . "` ( `index` int(11) NOT NULL AUTO_INCREMENT, `mapIndex` int(11) NOT NULL, `playerIndex` int(11) NOT NULL, @@ -118,7 +115,6 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getId() */ public static function getId() { @@ -126,7 +122,6 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getName() */ public static function getName() { @@ -134,7 +129,6 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getVersion() */ public static function getVersion() { @@ -142,7 +136,6 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getAuthor() */ public static function getAuthor() { @@ -150,7 +143,6 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getDescription() */ public static function getDescription() { @@ -174,16 +166,16 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { return; } $this->updateManialink = false; - $manialink = $this->buildManialink(); + $manialink = $this->buildManialink(); $this->maniaControl->manialinkManager->sendManialink($manialink); } /** * Handle PlayerConnect callback * - * @param array $callback + * @param Player $player */ - public function handlePlayerConnect(array $callback) { + public function handlePlayerConnect(Player $player) { $this->updateManialink = true; } @@ -207,17 +199,17 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { // Invalid player or time return; } - - $login = $data[1]; + + $login = $data[1]; $player = $this->maniaControl->playerManager->getPlayer($login); if (!$player) { // Invalid player return; } - + $time = $data[2]; - $map = $this->maniaControl->mapManager->getCurrentMap(); - + $map = $this->maniaControl->mapManager->getCurrentMap(); + // Check old record of the player $oldRecord = $this->getLocalRecord($map, $player); if ($oldRecord) { @@ -227,16 +219,15 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { } if ($oldRecord->time == $time) { // Same time - $message = '$<' . $player->nickname . '$> equalized her/his $<$o' . $oldRecord->rank . '.$> Local Record: ' . - Formatter::formatTime($oldRecord->time); + $message = '$<' . $player->nickname . '$> equalized her/his $<$o' . $oldRecord->rank . '.$> Local Record: ' . Formatter::formatTime($oldRecord->time); $this->maniaControl->chat->sendInformation($message); return; } } - + // Save time $mysqli = $this->maniaControl->database->mysqli; - $query = "INSERT INTO `" . self::TABLE_RECORDS . "` ( + $query = "INSERT INTO `" . self::TABLE_RECORDS . "` ( `mapIndex`, `playerIndex`, `time` @@ -252,21 +243,18 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { return; } $this->updateManialink = true; - + // Announce record - $newRecord = $this->getLocalRecord($map, $player); - $notifyOnlyDriver = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NOTIFY_ONLY_DRIVER); + $newRecord = $this->getLocalRecord($map, $player); + $notifyOnlyDriver = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NOTIFY_ONLY_DRIVER); $notifyOnlyBestRecords = $this->maniaControl->settingManager->getSetting($this, self::SETTING_NOTIFY_BEST_RECORDS); if ($notifyOnlyDriver || $notifyOnlyBestRecords > 0 && $newRecord->rank > $notifyOnlyBestRecords) { $improvement = ((!$oldRecord || $newRecord->rank < $oldRecord->rank) ? 'gained the' : 'improved Your'); - $message = 'You ' . $improvement . ' $<$o' . $newRecord->rank . '.$> Local Record: ' . - Formatter::formatTime($newRecord->time); + $message = 'You ' . $improvement . ' $<$o' . $newRecord->rank . '.$> Local Record: ' . Formatter::formatTime($newRecord->time); $this->maniaControl->chat->sendInformation($message, $player->login); - } - else { + } else { $improvement = ((!$oldRecord || $newRecord->rank < $oldRecord->rank) ? 'gained the' : 'improved the'); - $message = '$<' . $player->nickname . '$> ' . $improvement . ' $<$o' . $newRecord->rank . '.$> Local Record: ' . - Formatter::formatTime($newRecord->time); + $message = '$<' . $player->nickname . '$> ' . $improvement . ' $<$o' . $newRecord->rank . '.$> Local Record: ' . Formatter::formatTime($newRecord->time); $this->maniaControl->chat->sendInformation($message); } } @@ -281,25 +269,25 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { if (!$map) { return null; } - - $title = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_TITLE); - $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSX); - $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSY); - $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_WIDTH); - $lines = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_LINESCOUNT); - $lineHeight = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_LINEHEIGHT); - $labelStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultLabelStyle(); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); + + $title = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_TITLE); + $pos_x = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSX); + $pos_y = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_POSY); + $width = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_WIDTH); + $lines = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_LINESCOUNT); + $lineHeight = $this->maniaControl->settingManager->getSetting($this, self::SETTING_WIDGET_LINEHEIGHT); + $labelStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultLabelStyle(); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadStyle(); $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultQuadSubstyle(); - + $records = $this->getLocalRecords($map); if (!is_array($records)) { trigger_error("Couldn't fetch player records."); return null; } - + $manialink = new ManiaLink(self::MLID_RECORDS); - $frame = new Frame(); + $frame = new Frame(); $manialink->add($frame); $frame->setPosition($pos_x, $pos_y); @@ -307,10 +295,10 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $frame->add($backgroundQuad); $backgroundQuad->setVAlign(Control::TOP); $adjustOuterBorder = $this->maniaControl->settingManager->getSetting($this, self::SETTING_ADJUST_OUTER_BORDER); - $height = 7. + ($adjustOuterBorder ? count($records) : $lines) * $lineHeight; + $height = 7. + ($adjustOuterBorder ? count($records) : $lines) * $lineHeight; $backgroundQuad->setSize($width * 1.05, $height); $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - + $titleLabel = new Label(); $frame->add($titleLabel); $titleLabel->setPosition(0, $lineHeight * -0.9); @@ -319,15 +307,15 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $titleLabel->setTextSize(2); $titleLabel->setText($title); $titleLabel->setTranslate(true); - + // Times - foreach ($records as $index => $record) { + foreach($records as $index => $record) { if ($index >= $lines) { break; } $y = -8. - $index * $lineHeight; - + $recordFrame = new Frame(); $frame->add($recordFrame); $recordFrame->setPosition(0, $y); @@ -336,7 +324,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $recordFrame->add($backgroundQuad); $backgroundQuad->setSize($width * 1.04, $lineHeight * 1.4); $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - + $rankLabel = new Label(); $recordFrame->add($rankLabel); $rankLabel->setHAlign(Control::LEFT); @@ -345,7 +333,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $rankLabel->setTextSize(1); $rankLabel->setTextPrefix('$o'); $rankLabel->setText($record->rank); - + $nameLabel = new Label(); $recordFrame->add($nameLabel); $nameLabel->setHAlign(Control::LEFT); @@ -353,7 +341,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $nameLabel->setSize($width * 0.6, $lineHeight); $nameLabel->setTextSize(1); $nameLabel->setText($record->nickname); - + $timeLabel = new Label(); $recordFrame->add($timeLabel); $timeLabel->setHAlign(Control::RIGHT); @@ -362,7 +350,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { $timeLabel->setTextSize(1); $timeLabel->setText(Formatter::formatTime($record->time)); } - + return $manialink->render()->saveXML(); } @@ -375,8 +363,8 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { */ public function getLocalRecords(Map $map, $limit = -1) { $mysqli = $this->maniaControl->database->mysqli; - $limit = ($limit > 0 ? "LIMIT " . $limit : ""); - $query = "SELECT * FROM ( + $limit = ($limit > 0 ? "LIMIT " . $limit : ""); + $query = "SELECT * FROM ( SELECT recs.*, @rank := @rank + 1 as `rank` FROM `" . self::TABLE_RECORDS . "` recs, (SELECT @rank := 0) ra WHERE recs.`mapIndex` = {$map->index} ORDER BY recs.`time` ASC @@ -389,7 +377,7 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { return null; } $records = array(); - while ($record = $result->fetch_object()) { + while($record = $result->fetch_object()) { array_push($records, $record); } $result->free(); @@ -399,13 +387,13 @@ class LocalRecordsPlugin implements CallbackListener, TimerListener, Plugin { /** * Retrieve the local record for the given map and login * - * @param Map $map + * @param Map $map * @param Player $player * @return mixed */ private function getLocalRecord(Map $map, Player $player) { $mysqli = $this->maniaControl->database->mysqli; - $query = "SELECT records.* FROM ( + $query = "SELECT records.* FROM ( SELECT recs.*, @rank := @rank + 1 as `rank` FROM `" . self::TABLE_RECORDS . "` recs, (SELECT @rank := 0) ra WHERE recs.`mapIndex` = {$map->index} ORDER BY recs.`time` ASC) records