From be86717c0b18b72a9b4bba866f2a64d13dac24ae Mon Sep 17 00:00:00 2001 From: kremsy Date: Mon, 27 Jan 2014 20:39:10 +0100 Subject: [PATCH] prepare method --- application/core/Plugins/Plugin.php | 10 +- application/plugins/ChatMessagePlugin.php | 10 + application/plugins/Chatlog.php | 63 +- application/plugins/CustomVotes.php | 10 + application/plugins/Donations.php | 10 + .../plugins/DynamicPointlimitPlugin.php | 10 + application/plugins/Endurance.php | 10 + application/plugins/Karma.php | 10 + application/plugins/LocalRecords.php | 10 + application/plugins/Obstacle.php | 10 + application/plugins/QueuePlugin.php | 10 + application/plugins/TeamSpeakPlugin.php | 847 +++++++++--------- application/plugins/WidgetPlugin.php | 9 + 13 files changed, 571 insertions(+), 448 deletions(-) diff --git a/application/core/Plugins/Plugin.php b/application/core/Plugins/Plugin.php index 4aeaa363..f99ed964 100644 --- a/application/core/Plugins/Plugin.php +++ b/application/core/Plugins/Plugin.php @@ -15,10 +15,18 @@ interface Plugin { */ const PLUGIN_INTERFACE = __CLASS__; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl); + /** * Load the plugin * - * @param \ManiaControl\ManiaControl $maniaControl + * @param \ManiaControl\ManiaControl $maniaControl * @return bool */ public function load(ManiaControl $maniaControl); diff --git a/application/plugins/ChatMessagePlugin.php b/application/plugins/ChatMessagePlugin.php index b1471aa2..28a7abba 100644 --- a/application/plugins/ChatMessagePlugin.php +++ b/application/plugins/ChatMessagePlugin.php @@ -30,6 +30,16 @@ class ChatMessagePlugin implements CommandListener, Plugin { */ private $maniaControl = null; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * Load the plugin * diff --git a/application/plugins/Chatlog.php b/application/plugins/Chatlog.php index 1f182a29..2ec45a17 100644 --- a/application/plugins/Chatlog.php +++ b/application/plugins/Chatlog.php @@ -1,8 +1,8 @@ maniaControl = $maniaControl; - + // Init settings $this->maniaControl->settingManager->initSetting($this, self::SETTING_FOLDERNAME, 'logs'); $this->maniaControl->settingManager->initSetting($this, self::SETTING_FILENAME, 'ChatLog.log'); $this->maniaControl->settingManager->initSetting($this, self::SETTING_USEPID, false); $this->maniaControl->settingManager->initSetting($this, self::SETTING_LOGSERVERMESSAGES, true); - + // Get settings $folderName = $this->maniaControl->settingManager->getSetting($this, self::SETTING_FOLDERNAME); $folderName = FileUtil::getClearedFileName($folderName); - $folderDir = ManiaControlDir . '/' . $folderName; + $folderDir = ManiaControlDir . '/' . $folderName; if (!is_dir($folderDir)) { $success = mkdir($folderDir); if (!$success) { @@ -55,29 +64,26 @@ class ChatlogPlugin implements CallbackListener, Plugin { } $fileName = $this->maniaControl->settingManager->getSetting($this, self::SETTING_FILENAME); $fileName = FileUtil::getClearedFileName($fileName); - $usePId = $this->maniaControl->settingManager->getSetting($this, self::SETTING_USEPID); + $usePId = $this->maniaControl->settingManager->getSetting($this, self::SETTING_USEPID); if ($usePId) { $dotIndex = strripos($fileName, '.'); - $pIdPart = '_' . getmypid(); + $pIdPart = '_' . getmypid(); if ($dotIndex !== false && $dotIndex >= 0) { $fileName = substr($fileName, 0, $dotIndex) . $pIdPart . substr($fileName, $dotIndex); - } - else { + } else { $fileName .= $pIdPart; } } - $this->fileName = $folderDir . '/' . $fileName; + $this->fileName = $folderDir . '/' . $fileName; $this->logServerMessages = $this->maniaControl->settingManager->getSetting($this, self::SETTING_LOGSERVERMESSAGES); - + // Register for callbacks - $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERCHAT, $this, - 'handlePlayerChatCallback'); - + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MP_PLAYERCHAT, $this, 'handlePlayerChatCallback'); + return true; } /** - * * @see \ManiaControl\Plugins\Plugin::unload() */ public function unload() { @@ -86,7 +92,6 @@ class ChatlogPlugin implements CallbackListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getId() */ public static function getId() { @@ -94,7 +99,6 @@ class ChatlogPlugin implements CallbackListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getName() */ public static function getName() { @@ -102,7 +106,6 @@ class ChatlogPlugin implements CallbackListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getVersion() */ public static function getVersion() { @@ -110,7 +113,6 @@ class ChatlogPlugin implements CallbackListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getAuthor() */ public static function getAuthor() { @@ -118,7 +120,6 @@ class ChatlogPlugin implements CallbackListener, Plugin { } /** - * * @see \ManiaControl\Plugins\Plugin::getDescription() */ public static function getDescription() { @@ -128,7 +129,7 @@ class ChatlogPlugin implements CallbackListener, Plugin { /** * Handle PlayerChat callback * - * @param array $chatCallback + * @param array $chatCallback */ public function handlePlayerChatCallback(array $chatCallback) { $data = $chatCallback[1]; @@ -142,8 +143,8 @@ class ChatlogPlugin implements CallbackListener, Plugin { /** * Log the given message * - * @param string $text - * @param string $login + * @param string $text + * @param string $login */ private function logText($text, $login = null) { if (!$login) { diff --git a/application/plugins/CustomVotes.php b/application/plugins/CustomVotes.php index 6400b95d..e2018589 100644 --- a/application/plugins/CustomVotes.php +++ b/application/plugins/CustomVotes.php @@ -84,6 +84,16 @@ class CustomVotesPlugin implements CommandListener, CallbackListener, ManialinkP /** @var Player $voter */ private $voter = null; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * Load the plugin * diff --git a/application/plugins/Donations.php b/application/plugins/Donations.php index fe853562..f50a156c 100644 --- a/application/plugins/Donations.php +++ b/application/plugins/Donations.php @@ -43,6 +43,16 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { const SETTING_DONATION_VALUES = 'Donation Values'; const SETTING_MIN_AMOUNT_SHOWN = 'Minimum Donation amount to get shown'; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * Private properties */ diff --git a/application/plugins/DynamicPointlimitPlugin.php b/application/plugins/DynamicPointlimitPlugin.php index bf61c968..7ff4fcdc 100644 --- a/application/plugins/DynamicPointlimitPlugin.php +++ b/application/plugins/DynamicPointlimitPlugin.php @@ -27,6 +27,16 @@ class DynamicPointlimitPlugin implements CallbackListener, CommandListener, Plug const DYNPNT_MIN = 'Minimum pointlimit'; const DYNPNT_MAX = 'Maximum pointlimit'; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * Private properties */ diff --git a/application/plugins/Endurance.php b/application/plugins/Endurance.php index bb46fb6c..6030ac6f 100644 --- a/application/plugins/Endurance.php +++ b/application/plugins/Endurance.php @@ -25,6 +25,16 @@ class EndurancePlugin implements CallbackListener, Plugin { private $currentMap = null; private $playerLapTimes = array(); + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * * @see \ManiaControl\Plugins\Plugin::load() diff --git a/application/plugins/Karma.php b/application/plugins/Karma.php index b806780d..49fb2260 100644 --- a/application/plugins/Karma.php +++ b/application/plugins/Karma.php @@ -45,6 +45,16 @@ class KarmaPlugin implements CallbackListener, Plugin { private $updateManialink = false; private $manialink = null; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * * @see \ManiaControl\Plugins\Plugin::load() diff --git a/application/plugins/LocalRecords.php b/application/plugins/LocalRecords.php index 53931fd4..d3cb3167 100644 --- a/application/plugins/LocalRecords.php +++ b/application/plugins/LocalRecords.php @@ -45,6 +45,16 @@ class LocalRecordsPlugin implements CallbackListener, Plugin { private $maniaControl = null; private $updateManialink = false; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * * @see \ManiaControl\Plugins\Plugin::load() diff --git a/application/plugins/Obstacle.php b/application/plugins/Obstacle.php index 0a61abb1..859ae87b 100644 --- a/application/plugins/Obstacle.php +++ b/application/plugins/Obstacle.php @@ -29,6 +29,16 @@ class ObstaclePlugin implements CallbackListener, CommandListener, Plugin { /** @var maniaControl $maniaControl */ private $maniaControl = null; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * * @see \ManiaControl\Plugins\Plugin::load() diff --git a/application/plugins/QueuePlugin.php b/application/plugins/QueuePlugin.php index a2a1f89f..7d11c9d8 100644 --- a/application/plugins/QueuePlugin.php +++ b/application/plugins/QueuePlugin.php @@ -45,6 +45,16 @@ class QueuePlugin implements CallbackListener, CommandListener, ManialinkPageAns private $spectators = array(); private $showPlay = array(); + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } + /** * Load the plugin * diff --git a/application/plugins/TeamSpeakPlugin.php b/application/plugins/TeamSpeakPlugin.php index 2d0b465f..6b11280f 100644 --- a/application/plugins/TeamSpeakPlugin.php +++ b/application/plugins/TeamSpeakPlugin.php @@ -5,13 +5,12 @@ use FML\Controls\Labels\Label_Text; use FML\Controls\Quad; use FML\Controls\Quads\Quad_Icons64x64_1; use FML\ManiaLink; - use ManiaControl\Callbacks\CallbackListener; use ManiaControl\Callbacks\CallbackManager; use ManiaControl\Commands\CommandListener; use ManiaControl\ManiaControl; -use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Manialinks\ManialinkManager; +use ManiaControl\Manialinks\ManialinkPageAnswerListener; use ManiaControl\Players\Player; use ManiaControl\Plugins\Plugin; @@ -22,483 +21,499 @@ use ManiaControl\Plugins\Plugin; * * @author TheM */ - class TeamSpeakPlugin implements CallbackListener, CommandListener, ManialinkPageAnswerListener, Plugin { - /** - * Constants - */ - const ID = 11; - const VERSION = 0.1; + /** + * Constants + */ + const ID = 11; + const VERSION = 0.1; - const TEAMSPEAK_SID = 'TS Server ID'; - const TEAMSPEAK_SERVERHOST = 'TS Server host'; - const TEAMSPEAK_SERVERPORT = 'TS Server port'; - const TEAMSPEAK_QUERYHOST = 'TS Server Query host'; - const TEAMSPEAK_QUERYPORT = 'TS Server Query port'; - const TEAMSPEAK_QUERYUSER = 'TS Server Query user'; - const TEAMSPEAK_QUERYPASS = 'TS Server Query password'; + const TEAMSPEAK_SID = 'TS Server ID'; + const TEAMSPEAK_SERVERHOST = 'TS Server host'; + const TEAMSPEAK_SERVERPORT = 'TS Server port'; + const TEAMSPEAK_QUERYHOST = 'TS Server Query host'; + const TEAMSPEAK_QUERYPORT = 'TS Server Query port'; + const TEAMSPEAK_QUERYUSER = 'TS Server Query user'; + const TEAMSPEAK_QUERYPASS = 'TS Server Query password'; - const ACTION_OPEN_TSVIEWER = 'TSViewer.OpenWidget'; + const ACTION_OPEN_TSVIEWER = 'TSViewer.OpenWidget'; - const TS_ICON = 'Teamspeak.png'; - const TS_ICON_MOVER = 'Teamspeak_logo_press.png'; - const TS_ICON_LINK = 'http://dump.klaversma.eu'; + const TS_ICON = 'Teamspeak.png'; + const TS_ICON_MOVER = 'Teamspeak_logo_press.png'; + const TS_ICON_LINK = 'http://dump.klaversma.eu'; - /** - * Private properties - */ - /** @var ManiaControl $maniaControl */ - private $maniaControl = null; - private $serverData = array(); - private $refreshTime = 0; - private $refreshInterval = 90; + /** + * Private properties + */ + /** @var ManiaControl $maniaControl */ + private $maniaControl = null; + private $serverData = array(); + private $refreshTime = 0; + private $refreshInterval = 90; - /** - * Load the plugin - * - * @param \ManiaControl\ManiaControl $maniaControl - * @return bool - */ - public function load(ManiaControl $maniaControl) { - $this->maniaControl = $maniaControl; - $this->addConfigs(); - $this->checkConfig(); + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } - $this->refreshTime = time(); + /** + * Load the plugin + * + * @param \ManiaControl\ManiaControl $maniaControl + * @return bool + */ + public function load(ManiaControl $maniaControl) { + $this->maniaControl = $maniaControl; + $this->addConfigs(); + $this->checkConfig(); - $this->maniaControl->manialinkManager->iconManager->addIcon(self::TS_ICON, self::TS_ICON_LINK); - $this->maniaControl->manialinkManager->iconManager->addIcon(self::TS_ICON_MOVER, self::TS_ICON_LINK); + $this->refreshTime = time(); - $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_SECOND, $this, 'ts3_queryServer'); + $this->maniaControl->manialinkManager->iconManager->addIcon(self::TS_ICON, self::TS_ICON_LINK); + $this->maniaControl->manialinkManager->iconManager->addIcon(self::TS_ICON_MOVER, self::TS_ICON_LINK); - $this->addToMenu(); - } + $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_1_SECOND, $this, 'ts3_queryServer'); - /** - * Function used to add the configuration options to the settings manager. - */ - private function addConfigs() { - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SID, 1); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SERVERHOST, 'ts3.somehoster.com'); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SERVERPORT, 9987); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYHOST, ''); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYPORT, 10011); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYUSER, ''); - $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYPASS, ''); - } + $this->addToMenu(); + } - /** - * Function used to check certain configuration options to check if they can be used. - * - * @throws Exception - */ - private function checkConfig() { - if($this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST) == 'ts3.somehoster.com') { - $error = 'Missing the required serverhost, please set it up before enabling the TeamSpeak plugin!'; - throw new Exception($error); - } + /** + * Function used to add the configuration options to the settings manager. + */ + private function addConfigs() { + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SID, 1); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SERVERHOST, 'ts3.somehoster.com'); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_SERVERPORT, 9987); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYHOST, ''); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYPORT, 10011); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYUSER, ''); + $this->maniaControl->settingManager->initSetting($this, self::TEAMSPEAK_QUERYPASS, ''); + } - $this->ts3_queryServer(); // Get latest information from the TeamSpeak server - if(!isset($this->serverData['channels']) || count($this->serverData['channels']) == 0) { - $error = 'Could not make proper connections with the server!'; - throw new Exception($error); - } - } + /** + * Function used to check certain configuration options to check if they can be used. + * + * @throws Exception + */ + private function checkConfig() { + if ($this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST) == 'ts3.somehoster.com') { + $error = 'Missing the required serverhost, please set it up before enabling the TeamSpeak plugin!'; + throw new Exception($error); + } - /** - * Function used insert the icon into the menu. - */ - private function addToMenu() { - $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_OPEN_TSVIEWER, $this, 'command_tsViewer'); - $itemQuad = new Quad(); - $itemQuad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::TS_ICON)); - $itemQuad->setImageFocus($this->maniaControl->manialinkManager->iconManager->getIcon(self::TS_ICON_MOVER)); - $itemQuad->setAction(self::ACTION_OPEN_TSVIEWER); - $this->maniaControl->actionsMenu->addMenuItem($itemQuad, true, 1, 'Open TeamSpeak Viewer'); - } + $this->ts3_queryServer(); // Get latest information from the TeamSpeak server + if (!isset($this->serverData['channels']) || count($this->serverData['channels']) == 0) { + $error = 'Could not make proper connections with the server!'; + throw new Exception($error); + } + } - /** - * Unload the plugin and its resources - */ - public function unload() { - $this->serverData = array(); - $this->lastRequest = null; + /** + * Function used insert the icon into the menu. + */ + private function addToMenu() { + $this->maniaControl->manialinkManager->registerManialinkPageAnswerListener(self::ACTION_OPEN_TSVIEWER, $this, 'command_tsViewer'); + $itemQuad = new Quad(); + $itemQuad->setImage($this->maniaControl->manialinkManager->iconManager->getIcon(self::TS_ICON)); + $itemQuad->setImageFocus($this->maniaControl->manialinkManager->iconManager->getIcon(self::TS_ICON_MOVER)); + $itemQuad->setAction(self::ACTION_OPEN_TSVIEWER); + $this->maniaControl->actionsMenu->addMenuItem($itemQuad, true, 1, 'Open TeamSpeak Viewer'); + } - $this->maniaControl->actionsMenu->removeMenuItem(1, true); - $this->maniaControl->manialinkManager->unregisterManialinkPageAnswerListener($this); - $this->maniaControl->callbackManager->unregisterCallbackListener($this); - $this->maniaControl->commandManager->unregisterCommandListener($this); - $this->maniaControl = null; - } + /** + * Unload the plugin and its resources + */ + public function unload() { + $this->serverData = array(); + $this->lastRequest = null; - /** - * Get plugin id - * - * @return int - */ - public static function getId() { - return self::ID; - } + $this->maniaControl->actionsMenu->removeMenuItem(1, true); + $this->maniaControl->manialinkManager->unregisterManialinkPageAnswerListener($this); + $this->maniaControl->callbackManager->unregisterCallbackListener($this); + $this->maniaControl->commandManager->unregisterCommandListener($this); + $this->maniaControl = null; + } - /** - * Get Plugin Name - * - * @return string - */ - public static function getName() { - return 'TeamSpeak Plugin'; - } + /** + * Get plugin id + * + * @return int + */ + public static function getId() { + return self::ID; + } - /** - * Get Plugin Version - * - * @return float - */ - public static function getVersion() { - return self::VERSION; - } + /** + * Get Plugin Name + * + * @return string + */ + public static function getName() { + return 'TeamSpeak Plugin'; + } - /** - * Get Plugin Author - * - * @return string - */ - public static function getAuthor() { - return 'TheM'; - } + /** + * Get Plugin Version + * + * @return float + */ + public static function getVersion() { + return self::VERSION; + } - /** - * Get Plugin Description - * - * @return string - */ - public static function getDescription() { - return 'Plugin offers a connection with a TeamSpeak server (via widgets).'; - } + /** + * Get Plugin Author + * + * @return string + */ + public static function getAuthor() { + return 'TheM'; + } - /** - * Function handling the pressing of the icon. - * - * @param array $chatCallback - * @param Player $player - */ - public function command_tsViewer(array $chatCallback, Player $player) { - $this->showWidget($player); - } + /** + * Get Plugin Description + * + * @return string + */ + public static function getDescription() { + return 'Plugin offers a connection with a TeamSpeak server (via widgets).'; + } - /** - * Function showing the TeamSpeak widget to the player. - * - * @param $player - */ - private function showWidget($player) { - $width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); - $height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); - $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); - $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); + /** + * Function handling the pressing of the icon. + * + * @param array $chatCallback + * @param Player $player + */ + public function command_tsViewer(array $chatCallback, Player $player) { + $this->showWidget($player); + } - $maniaLink = new ManiaLink(ManialinkManager::MAIN_MLID); + /** + * Function showing the TeamSpeak widget to the player. + * + * @param $player + */ + private function showWidget($player) { + $width = $this->maniaControl->manialinkManager->styleManager->getListWidgetsWidth(); + $height = $this->maniaControl->manialinkManager->styleManager->getListWidgetsHeight(); + $quadStyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowStyle(); + $quadSubstyle = $this->maniaControl->manialinkManager->styleManager->getDefaultMainWindowSubStyle(); - // Main frame - $frame = new Frame(); - $maniaLink->add($frame); - $frame->setSize($width, $height); - $frame->setPosition(0, 0, 10); + $maniaLink = new ManiaLink(ManialinkManager::MAIN_MLID); - // Background - $backgroundQuad = new Quad(); - $frame->add($backgroundQuad); - $backgroundQuad->setSize($width, $height); - $backgroundQuad->setStyles($quadStyle, $quadSubstyle); + // Main frame + $frame = new Frame(); + $maniaLink->add($frame); + $frame->setSize($width, $height); + $frame->setPosition(0, 0, 10); - // Close Quad (X) - $closeQuad = new Quad_Icons64x64_1(); - $frame->add($closeQuad); - $closeQuad->setPosition($width * 0.483, $height * 0.467, 3); - $closeQuad->setSize(6, 6); - $closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); - $closeQuad->setAction(ManialinkManager::ACTION_CLOSEWIDGET); + // Background + $backgroundQuad = new Quad(); + $frame->add($backgroundQuad); + $backgroundQuad->setSize($width, $height); + $backgroundQuad->setStyles($quadStyle, $quadSubstyle); - $servername = new Label_Text(); - $frame->add($servername); - $servername->setY($height / 2 - 4); - $servername->setX(-70); - $servername->setStyle($servername::STYLE_TextCardMedium); - $servername->setHAlign('left'); - $servername->setTextSize(1); - $servername->setText('$oServername:$o '.$this->serverData['server']['virtualserver_name']); - $servername->setTextColor('fff'); + // Close Quad (X) + $closeQuad = new Quad_Icons64x64_1(); + $frame->add($closeQuad); + $closeQuad->setPosition($width * 0.483, $height * 0.467, 3); + $closeQuad->setSize(6, 6); + $closeQuad->setSubStyle(Quad_Icons64x64_1::SUBSTYLE_QuitRace); + $closeQuad->setAction(ManialinkManager::ACTION_CLOSEWIDGET); - $serverversion = new Label_Text(); - $frame->add($serverversion); - $serverversion->setY($height / 2 - 4); - $serverversion->setX(2); - $serverversion->setStyle($serverversion::STYLE_TextCardMedium); - $serverversion->setHAlign('left'); - $serverversion->setTextSize(1); - $serverversion->setText('$oServerversion:$o '.$this->serverData['server']['virtualserver_version']); - $serverversion->setTextColor('fff'); + $servername = new Label_Text(); + $frame->add($servername); + $servername->setY($height / 2 - 4); + $servername->setX(-70); + $servername->setStyle($servername::STYLE_TextCardMedium); + $servername->setHAlign('left'); + $servername->setTextSize(1); + $servername->setText('$oServername:$o ' . $this->serverData['server']['virtualserver_name']); + $servername->setTextColor('fff'); - $clients = new Label_Text(); - $frame->add($clients); - $clients->setY($height / 2 - 7); - $clients->setX(-70); - $clients->setStyle($clients::STYLE_TextCardMedium); - $clients->setHAlign('left'); - $clients->setTextSize(1); - $clients->setText('$oConnected clients:$o '.$this->serverData['server']['virtualserver_clientsonline'].'/'.$this->serverData['server']['virtualserver_maxclients']); - $clients->setTextColor('fff'); + $serverversion = new Label_Text(); + $frame->add($serverversion); + $serverversion->setY($height / 2 - 4); + $serverversion->setX(2); + $serverversion->setStyle($serverversion::STYLE_TextCardMedium); + $serverversion->setHAlign('left'); + $serverversion->setTextSize(1); + $serverversion->setText('$oServerversion:$o ' . $this->serverData['server']['virtualserver_version']); + $serverversion->setTextColor('fff'); - $channels = new Label_Text(); - $frame->add($channels); - $channels->setY($height / 2 - 7); - $channels->setX(2); - $channels->setStyle($channels::STYLE_TextCardMedium); - $channels->setHAlign('left'); - $channels->setTextSize(1); - $nochannels = 0; - foreach($this->serverData['channels'] as $channel) { - if($channel['channel_maxclients'] == 0 || strpos($channel['channel_name'], 'spacer') > 0) continue; - $nochannels++; - } - $channels->setText('$oChannels:$o '.$nochannels); - $channels->setTextColor('fff'); + $clients = new Label_Text(); + $frame->add($clients); + $clients->setY($height / 2 - 7); + $clients->setX(-70); + $clients->setStyle($clients::STYLE_TextCardMedium); + $clients->setHAlign('left'); + $clients->setTextSize(1); + $clients->setText('$oConnected clients:$o ' . $this->serverData['server']['virtualserver_clientsonline'] . '/' . $this->serverData['server']['virtualserver_maxclients']); + $clients->setTextColor('fff'); - // Join button - $joinbutton = new Label_Button(); - $frame->add($joinbutton); - $joinbutton->setWidth(150); - $joinbutton->setY($height / 2 - 11.5); - $joinbutton->setStyle($joinbutton::STYLE_CardButtonSmallWide); - $joinbutton->setText('Join TeamSpeak: '.$this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST).':'.$this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERPORT)); - $joinbutton->setTextColor('fff'); - $url = 'ts3server://'. $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST) .'/?port='. $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERPORT) .'&nickname='. rawurlencode(\ManiaControl\Formatter::stripCodes($player->nickname)); - $joinbutton->setUrl($url); + $channels = new Label_Text(); + $frame->add($channels); + $channels->setY($height / 2 - 7); + $channels->setX(2); + $channels->setStyle($channels::STYLE_TextCardMedium); + $channels->setHAlign('left'); + $channels->setTextSize(1); + $nochannels = 0; + foreach($this->serverData['channels'] as $channel) { + if ($channel['channel_maxclients'] == 0 || strpos($channel['channel_name'], 'spacer') > 0) { + continue; + } + $nochannels++; + } + $channels->setText('$oChannels:$o ' . $nochannels); + $channels->setTextColor('fff'); - $leftlistQuad = new Quad(); - $frame->add($leftlistQuad); - $leftlistQuad->setSize((($width/2)-5), ($height-18)); - $leftlistQuad->setX(-36); - $leftlistQuad->setY($height / 2 - 46); - $leftlistQuad->setStyles($quadStyle, $quadSubstyle); + // Join button + $joinbutton = new Label_Button(); + $frame->add($joinbutton); + $joinbutton->setWidth(150); + $joinbutton->setY($height / 2 - 11.5); + $joinbutton->setStyle($joinbutton::STYLE_CardButtonSmallWide); + $joinbutton->setText('Join TeamSpeak: ' . $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST) . ':' . $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERPORT)); + $joinbutton->setTextColor('fff'); + $url = 'ts3server://' . $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST) . '/?port=' . $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERPORT) . '&nickname=' . rawurlencode(\ManiaControl\Formatter::stripCodes($player->nickname)); + $joinbutton->setUrl($url); - $channels = array(); - $users = array(); - $userid = 0; - $i = 0; - $startx = -69.5; - foreach($this->serverData['channels'] as $channel) { - if($channel['channel_maxclients'] == 0 || strpos($channel['channel_name'], 'spacer') > 0) continue; - $channels[$i] = new Label_Text(); - $frame->add($channels[$i]); - $y = 17.5+($i*2.5); - $channels[$i]->setY($height / 2 - $y); - $x = $startx; - if($channel['pid'] != 0) { - $x = $startx+5; - } - $channels[$i]->setX($x); - $channels[$i]->setStyle($channels[$i]::STYLE_TextCardMedium); - $channels[$i]->setHAlign('left'); - $channels[$i]->setTextSize(1); - $channels[$i]->setScale(0.9); - if($channel['channel_flag_default'] == 1) $channel['total_clients'] = ($channel['total_clients']-1); // remove query client - $channels[$i]->setText('$o'.$channel['channel_name'].'$o ('.$channel['total_clients'].')'); - $channels[$i]->setTextColor('fff'); + $leftlistQuad = new Quad(); + $frame->add($leftlistQuad); + $leftlistQuad->setSize((($width / 2) - 5), ($height - 18)); + $leftlistQuad->setX(-36); + $leftlistQuad->setY($height / 2 - 46); + $leftlistQuad->setStyles($quadStyle, $quadSubstyle); - $i++; - foreach($this->serverData['users'] as $user) { - if($user['cid'] == $channel['cid']) { - $users[$userid] = new Label_Text(); - $frame->add($users[$userid]); - $y = 17.5+($i*2.5); - $users[$userid]->setY($height / 2 - $y); - $x = $startx; - if($channel['pid'] != 0) { - $x = $startx+7; - } else { - $x = $startx+2; - } - $users[$userid]->setX($x); - $users[$userid]->setStyle($users[$userid]::STYLE_TextCardMedium); - $users[$userid]->setHAlign('left'); - $users[$userid]->setTextSize(1); - $users[$userid]->setScale(0.9); - $users[$userid]->setText($user['client_nickname']); - $users[$userid]->setTextColor('fff'); - $userid++; - $i++; + $channels = array(); + $users = array(); + $userid = 0; + $i = 0; + $startx = -69.5; + foreach($this->serverData['channels'] as $channel) { + if ($channel['channel_maxclients'] == 0 || strpos($channel['channel_name'], 'spacer') > 0) { + continue; + } + $channels[$i] = new Label_Text(); + $frame->add($channels[$i]); + $y = 17.5 + ($i * 2.5); + $channels[$i]->setY($height / 2 - $y); + $x = $startx; + if ($channel['pid'] != 0) { + $x = $startx + 5; + } + $channels[$i]->setX($x); + $channels[$i]->setStyle($channels[$i]::STYLE_TextCardMedium); + $channels[$i]->setHAlign('left'); + $channels[$i]->setTextSize(1); + $channels[$i]->setScale(0.9); + if ($channel['channel_flag_default'] == 1) { + $channel['total_clients'] = ($channel['total_clients'] - 1); + } // remove query client + $channels[$i]->setText('$o' . $channel['channel_name'] . '$o (' . $channel['total_clients'] . ')'); + $channels[$i]->setTextColor('fff'); - if($i > 22) { - $i = 0; - $startx = 2.5; - } - } - } + $i++; + foreach($this->serverData['users'] as $user) { + if ($user['cid'] == $channel['cid']) { + $users[$userid] = new Label_Text(); + $frame->add($users[$userid]); + $y = 17.5 + ($i * 2.5); + $users[$userid]->setY($height / 2 - $y); + $x = $startx; + if ($channel['pid'] != 0) { + $x = $startx + 7; + } else { + $x = $startx + 2; + } + $users[$userid]->setX($x); + $users[$userid]->setStyle($users[$userid]::STYLE_TextCardMedium); + $users[$userid]->setHAlign('left'); + $users[$userid]->setTextSize(1); + $users[$userid]->setScale(0.9); + $users[$userid]->setText($user['client_nickname']); + $users[$userid]->setTextColor('fff'); + $userid++; + $i++; - if($i > 22) { - $i = 0; - $startx = 2.5; - } - } + if ($i > 22) { + $i = 0; + $startx = 2.5; + } + } + } - $rightlistQuad = new Quad(); - $frame->add($rightlistQuad); - $rightlistQuad->setSize((($width/2)-5), ($height-18)); - $rightlistQuad->setX(36); - $rightlistQuad->setY($height / 2 - 46); - $rightlistQuad->setStyles($quadStyle, $quadSubstyle); + if ($i > 22) { + $i = 0; + $startx = 2.5; + } + } - $this->maniaControl->manialinkManager->displayWidget($maniaLink, $player, 'TSViewer'); - } + $rightlistQuad = new Quad(); + $frame->add($rightlistQuad); + $rightlistQuad->setSize((($width / 2) - 5), ($height - 18)); + $rightlistQuad->setX(36); + $rightlistQuad->setY($height / 2 - 46); + $rightlistQuad->setStyles($quadStyle, $quadSubstyle); - /** - * TeamSpeak related functions - * - * The functions are based upon tsstatus.php from http://tsstatus.sebastien.me/ - * and were optimized by SilentStorm. - * - * Functions originally from the TeamSpeakInfo plugin made by undef.de for XAseco(2) and MPAseco. - */ + $this->maniaControl->manialinkManager->displayWidget($maniaLink, $player, 'TSViewer'); + } - public function ts3_queryServer() { - if(time() >= $this->refreshTime) { - $this->refreshTime = (time()+$this->refreshInterval); + /** + * TeamSpeak related functions + * The functions are based upon tsstatus.php from http://tsstatus.sebastien.me/ + * and were optimized by SilentStorm. + * Functions originally from the TeamSpeakInfo plugin made by undef.de for XAseco(2) and MPAseco. + */ - $queryhost = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYHOST); - $host = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST); + public function ts3_queryServer() { + if (time() >= $this->refreshTime) { + $this->refreshTime = (time() + $this->refreshInterval); - $host = ($queryhost != '') ? $queryhost : $host; + $queryhost = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYHOST); + $host = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SERVERHOST); - $socket = fsockopen($host, $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYPORT), $errno, $errstr, 2); - if($socket) { - socket_set_timeout($socket, 2); - $is_ts3 = trim(fgets($socket)) == 'TS3'; - if(!$is_ts3) { - trigger_error('[TeamSpeakPlugin] Server at "'. $host .'" is not a Teamspeak3-Server or you have setup a bad query-port!', E_USER_WARNING); - } + $host = ($queryhost != '') ? $queryhost : $host; - $queryuser = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYUSER); - $querypass = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYPASS); - if(($queryuser != '') && !is_numeric($queryuser) && $queryuser != false && ($querypass != '') && !is_numeric($querypass) && $querypass != false) { - $ret = $this->ts3_sendCommand($socket, 'login client_login_name='. $this->ts3_escape($queryuser) .' client_login_password='. $this->ts3_escape($querypass)); - if(stripos($ret, "error id=0") === false) { - trigger_error("[TeamSpeakPlugin] Failed to authenticate with TS3 Server! Make sure you put the correct username & password in teamspeak.xml", E_USER_WARNING); - return; - } - } + $socket = fsockopen($host, $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYPORT), $errno, $errstr, 2); + if ($socket) { + socket_set_timeout($socket, 2); + $is_ts3 = trim(fgets($socket)) == 'TS3'; + if (!$is_ts3) { + trigger_error('[TeamSpeakPlugin] Server at "' . $host . '" is not a Teamspeak3-Server or you have setup a bad query-port!', E_USER_WARNING); + } - $response = ''; - $response .= $this->ts3_sendCommand($socket, 'use sid='.$this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SID)); - $this->ts3_sendCommand($socket, 'clientupdate client_nickname=' . $this->ts3_escape('ManiaControl Viewer')); - $response .= $this->ts3_sendCommand($socket, 'serverinfo'); - $response .= $this->ts3_sendCommand($socket, 'channellist -topic -flags -voice -limits'); - $response .= $this->ts3_sendCommand($socket, 'clientlist -uid -away -voice -groups'); + $queryuser = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYUSER); + $querypass = $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_QUERYPASS); + if (($queryuser != '') && !is_numeric($queryuser) && $queryuser != false && ($querypass != '') && !is_numeric($querypass) && $querypass != false) { + $ret = $this->ts3_sendCommand($socket, 'login client_login_name=' . $this->ts3_escape($queryuser) . ' client_login_password=' . $this->ts3_escape($querypass)); + if (stripos($ret, "error id=0") === false) { + trigger_error("[TeamSpeakPlugin] Failed to authenticate with TS3 Server! Make sure you put the correct username & password in teamspeak.xml", E_USER_WARNING); + return; + } + } - fputs($socket, "quit\n"); - fclose($socket); + $response = ''; + $response .= $this->ts3_sendCommand($socket, 'use sid=' . $this->maniaControl->settingManager->getSetting($this, self::TEAMSPEAK_SID)); + $this->ts3_sendCommand($socket, 'clientupdate client_nickname=' . $this->ts3_escape('ManiaControl Viewer')); + $response .= $this->ts3_sendCommand($socket, 'serverinfo'); + $response .= $this->ts3_sendCommand($socket, 'channellist -topic -flags -voice -limits'); + $response .= $this->ts3_sendCommand($socket, 'clientlist -uid -away -voice -groups'); - $lines = explode("error id=0 msg=ok\n\r", $response); - if(count($lines) == 5) { - $serverdata = $this->ts3_parseLine($lines[1]); - $this->serverData['server'] = $serverdata[0]; - $this->serverData['channels'] = $this->ts3_parseLine($lines[2]); + fputs($socket, "quit\n"); + fclose($socket); - $users = $this->ts3_parseLine($lines[3]); - $this->serverData['users'] = array(); // reset userslist - foreach($users as $user) { - if($user['client_nickname'] != 'ManiaControl Viewer') { - $this->serverData['users'][] = $user; - } - } + $lines = explode("error id=0 msg=ok\n\r", $response); + if (count($lines) == 5) { + $serverdata = $this->ts3_parseLine($lines[1]); + $this->serverData['server'] = $serverdata[0]; + $this->serverData['channels'] = $this->ts3_parseLine($lines[2]); - // Subtract reserved slots - $this->serverData['server']['virtualserver_maxclients'] -= $this->serverData['server']['virtualserver_reserved_slots']; + $users = $this->ts3_parseLine($lines[3]); + $this->serverData['users'] = array(); // reset userslist + foreach($users as $user) { + if ($user['client_nickname'] != 'ManiaControl Viewer') { + $this->serverData['users'][] = $user; + } + } - // Make ping value int - $this->serverData['server']['virtualserver_total_ping'] = intval($this->serverData['server']['virtualserver_total_ping']); + // Subtract reserved slots + $this->serverData['server']['virtualserver_maxclients'] -= $this->serverData['server']['virtualserver_reserved_slots']; - // Format the Date of server startup - $this->serverData['server']['virtualserver_uptime'] = date('Y-m-d H:i:s', (time() - $this->serverData['server']['virtualserver_uptime']) ); + // Make ping value int + $this->serverData['server']['virtualserver_total_ping'] = intval($this->serverData['server']['virtualserver_total_ping']); - // Always subtract all Query Clients - $this->serverData['server']['virtualserver_clientsonline'] -= $this->serverData['server']['virtualserver_queryclientsonline']; - } - } else { - trigger_error("[TeamSpeakPlugin] Failed to connect with TS3 server; socket error: ". $errstr ." [". $errno ."]", E_USER_WARNING); - } - } - } + // Format the Date of server startup + $this->serverData['server']['virtualserver_uptime'] = date('Y-m-d H:i:s', (time() - $this->serverData['server']['virtualserver_uptime'])); - /** - * TS Function to send a command to the TeamSpeak server. - * @param $socket - * @param $cmd - * @return string - */ - private function ts3_sendCommand ($socket, $cmd) { + // Always subtract all Query Clients + $this->serverData['server']['virtualserver_clientsonline'] -= $this->serverData['server']['virtualserver_queryclientsonline']; + } + } else { + trigger_error("[TeamSpeakPlugin] Failed to connect with TS3 server; socket error: " . $errstr . " [" . $errno . "]", E_USER_WARNING); + } + } + } - fputs($socket, "$cmd\n"); + /** + * TS Function to send a command to the TeamSpeak server. + * + * @param $socket + * @param $cmd + * @return string + */ + private function ts3_sendCommand($socket, $cmd) { - $response = ''; - /*while(strpos($response, 'error id=') === false) { - $response .= fread($socket, 8096); - }*/ + fputs($socket, "$cmd\n"); - /*while (!feof($socket)) { - $response .= fread($socket, 8192); - }*/ + $response = ''; + /*while(strpos($response, 'error id=') === false) { + $response .= fread($socket, 8096); + }*/ - $info = array('timed_out' => false); - while (!feof($socket) && !$info['timed_out'] && strpos($response, 'error id=') === false) { - $response .= fread($socket, 1024); - $info = stream_get_meta_data($socket); - } + /*while (!feof($socket)) { + $response .= fread($socket, 8192); + }*/ - return $response; - } + $info = array('timed_out' => false); + while(!feof($socket) && !$info['timed_out'] && strpos($response, 'error id=') === false) { + $response .= fread($socket, 1024); + $info = stream_get_meta_data($socket); + } - /** - * TS Function used to parse lines in the serverresponse. - * @param $rawLine - * @return array - */ - private function ts3_parseLine ($rawLine) { + return $response; + } - $datas = array(); - $rawItems = explode('|', $rawLine); + /** + * TS Function used to parse lines in the serverresponse. + * + * @param $rawLine + * @return array + */ + private function ts3_parseLine($rawLine) { - foreach($rawItems as &$rawItem) { - $rawDatas = explode(' ', $rawItem); - $tempDatas = array(); - foreach($rawDatas as &$rawData) { - $ar = explode("=", $rawData, 2); - $tempDatas[$ar[0]] = isset($ar[1]) ? $this->ts3_unescape($ar[1]) : ''; - } - $datas[] = $tempDatas; - } - unset($rawItem, $rawData); + $datas = array(); + $rawItems = explode('|', $rawLine); - return $datas; - } + foreach($rawItems as &$rawItem) { + $rawDatas = explode(' ', $rawItem); + $tempDatas = array(); + foreach($rawDatas as &$rawData) { + $ar = explode("=", $rawData, 2); + $tempDatas[$ar[0]] = isset($ar[1]) ? $this->ts3_unescape($ar[1]) : ''; + } + $datas[] = $tempDatas; + } + unset($rawItem, $rawData); - /** - * TS Function used to escape characters in channelnames. - * - * @param $str - * @return mixed - */ - private function ts3_escape ($str) { - return str_replace(array(chr(92), chr(47), chr(32), chr(124), chr(7), chr(8), chr(12), chr(10), chr(3), chr(9), chr(11)), array('\\\\', "\/", "\s", "\p", "\a", "\b", "\f", "\n", "\r", "\t", "\v"), $str); - } + return $datas; + } + + /** + * TS Function used to escape characters in channelnames. + * + * @param $str + * @return mixed + */ + private function ts3_escape($str) { + return str_replace(array(chr(92), chr(47), chr(32), chr(124), chr(7), chr(8), chr(12), chr(10), chr(3), chr(9), chr(11)), array('\\\\', "\/", "\s", "\p", "\a", "\b", "\f", "\n", "\r", "\t", "\v"), $str); + } + + /** + * TS Function used to unescape characters in channelnames. + * + * @param $str + * @return mixed + */ + private function ts3_unescape($str) { + return str_replace(array('\\\\', "\/", "\s", "\p", "\a", "\b", "\f", "\n", "\r", "\t", "\v"), array(chr(92), chr(47), chr(32), chr(124), chr(7), chr(8), chr(12), chr(10), chr(3), chr(9), chr(11)), $str); + } - /** - * TS Function used to unescape characters in channelnames. - * - * @param $str - * @return mixed - */ - private function ts3_unescape ($str) { - return str_replace(array('\\\\', "\/", "\s", "\p", "\a", "\b", "\f", "\n", "\r", "\t", "\v"), array(chr(92), chr(47), chr(32), chr(124), chr(7), chr(8), chr(12), chr(10), chr(3), chr(9), chr(11)), $str); - } } \ No newline at end of file diff --git a/application/plugins/WidgetPlugin.php b/application/plugins/WidgetPlugin.php index b49c9b29..081fc9cf 100644 --- a/application/plugins/WidgetPlugin.php +++ b/application/plugins/WidgetPlugin.php @@ -72,6 +72,15 @@ class WidgetPlugin implements CallbackListener, Plugin { */ private $maniaControl = null; + /** + * Prepares the Plugin + * + * @param ManiaControl $maniaControl + * @return mixed + */ + public static function prepare(ManiaControl $maniaControl) { + // TODO: Implement prepare() method. + } /** * Load the plugin