diff --git a/application/core/Configurators/ScriptSettings.php b/application/core/Configurators/ScriptSettings.php index 57afb5a0..e40cf713 100644 --- a/application/core/Configurators/ScriptSettings.php +++ b/application/core/Configurators/ScriptSettings.php @@ -57,10 +57,10 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener { private function initTables() { $mysqli = $this->maniaControl->database->mysqli; $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SCRIPT_SETTINGS . "` ( - `serverId` int(11) NOT NULL AUTO_INCREMENT, + `serverIndex` int(11) NOT NULL AUTO_INCREMENT, `settingName` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `settingValue` varchar(500) COLLATE utf8_unicode_ci NOT NULL, - UNIQUE KEY `setting` (`serverId`, `settingName`) + UNIQUE KEY `setting` (`serverIndex`, `settingName`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Script Settings' AUTO_INCREMENT=1;"; $statement = $mysqli->prepare($query); @@ -371,7 +371,7 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener { // Save Settings into Database $mysqli = $this->maniaControl->database->mysqli; $query = "INSERT INTO `" . self::TABLE_SCRIPT_SETTINGS . "` ( - `serverId`, + `serverIndex`, `settingName`, `settingValue` ) VALUES ( @@ -384,7 +384,7 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener { return false; } - $serverId = $this->maniaControl->server->getServerId(); + $serverIndex = $this->maniaControl->server->getIndex(); // Notifications $settingsCount = count($newSettings); @@ -400,7 +400,7 @@ class ScriptSettings implements ConfiguratorMenu, CallbackListener { } // Add To Database - $statement->bind_param('iss', $serverId, $setting, $value); + $statement->bind_param('iss', $serverIndex, $setting, $value); $statement->execute(); if ($statement->error) { trigger_error($statement->error); diff --git a/application/core/Configurators/ServerSettings.php b/application/core/Configurators/ServerSettings.php index 71544533..6e9f663a 100644 --- a/application/core/Configurators/ServerSettings.php +++ b/application/core/Configurators/ServerSettings.php @@ -56,10 +56,10 @@ class ServerSettings implements ConfiguratorMenu, CallbackListener { private function initTables() { $mysqli = $this->maniaControl->database->mysqli; $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SERVER_SETTINGS . "` ( - `serverId` int(11) NOT NULL AUTO_INCREMENT, + `serverIndex` int(11) NOT NULL AUTO_INCREMENT, `settingName` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `settingValue` varchar(500) COLLATE utf8_unicode_ci NOT NULL, - UNIQUE KEY `setting` (`serverId`, `settingName`) + UNIQUE KEY `setting` (`serverIndex`, `settingName`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Server Settings' AUTO_INCREMENT=1;"; $statement = $mysqli->prepare($query); if ($mysqli->error) { @@ -338,7 +338,7 @@ class ServerSettings implements ConfiguratorMenu, CallbackListener { $mysqli = $this->maniaControl->database->mysqli; $query = "INSERT INTO `" . self::TABLE_SERVER_SETTINGS . "` ( - `serverId`, + `serverIndex`, `settingName`, `settingValue` ) VALUES ( @@ -351,7 +351,7 @@ class ServerSettings implements ConfiguratorMenu, CallbackListener { return false; } - $serverId = $this->maniaControl->server->getServerId(); + $serverIndex = $this->maniaControl->server->getIndex(); // Notifications $settingsCount = count($newSettings); @@ -360,7 +360,7 @@ class ServerSettings implements ConfiguratorMenu, CallbackListener { // $chatMessage = '$ff0' . $title . ' $<' . $player->nickname . '$> set ScriptSetting' . ($settingsCount > 1 ? 's' : '') . ' '; foreach ($newSettings as $setting => $value) { - $statement->bind_param('iss', $serverId, $setting, $value); + $statement->bind_param('iss', $serverIndex, $setting, $value); $statement->execute(); if ($statement->error) { trigger_error($statement->error); diff --git a/application/core/Players/PlayerManager.php b/application/core/Players/PlayerManager.php index 99bbad78..66366edf 100644 --- a/application/core/Players/PlayerManager.php +++ b/application/core/Players/PlayerManager.php @@ -308,7 +308,8 @@ class PlayerManager implements CallbackListener { $playerStatement->close(); // Increment the Player Join Count - $this->maniaControl->statisticManager->incrementStat(self::STAT_JOIN_COUNT, $player, $this->maniaControl->server->getServerId()); + $serverIndex = $this->maniaControl->server->getIndex(); + $this->maniaControl->statisticManager->incrementStat(self::STAT_JOIN_COUNT, $player, $serverIndex); return true; } @@ -325,6 +326,7 @@ class PlayerManager implements CallbackListener { } $playedTime = time() - $player->joinTime; - return $this->maniaControl->statisticManager->insertStat(self::STAT_SERVERTIME, $player, $this->maniaControl->server->getServerId(), $playedTime); + $serverIndex = $this->maniaControl->server->getIndex(); + return $this->maniaControl->statisticManager->insertStat(self::STAT_SERVERTIME, $player, $serverIndex, $playedTime); } } diff --git a/application/core/Server/Server.php b/application/core/Server/Server.php index 1c22b4f2..d7054fe2 100644 --- a/application/core/Server/Server.php +++ b/application/core/Server/Server.php @@ -11,28 +11,29 @@ use ManiaControl\Players\Player; require_once __DIR__ . '/ServerCommands.php'; /** - * Class providing information and commands for the connected maniaplanet server + * Class providing Information about theconnected ManiaPlanet Server * * @author steeffeen & kremsy */ class Server implements CallbackListener { - + /** * Constants */ const TABLE_SERVERS = 'mc_servers'; - + /** - * Public properties + * Public Properties */ public $config = null; - + /** - * Private properties + * Private Properties */ private $maniaControl = null; private $serverCommands = null; - private $serverId = 0; + private $index = null; + private $login = null; /** * Construct server @@ -41,104 +42,80 @@ class Server implements CallbackListener { */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - + $this->initTables(); + // Load config $this->config = FileUtil::loadConfig('server.xml'); - + // Register for callbacks $this->maniaControl->callbackManager->registerCallbackListener(CallbackManager::CB_MC_ONINIT, $this, 'onInit'); - + $this->serverCommands = new ServerCommands($maniaControl); - - $this->initTables(); } /** - * Initialize necessary database tables + * Initialize necessary Database Tables * * @return bool */ private function initTables() { $mysqli = $this->maniaControl->database->mysqli; - $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SERVERS . "` ( - `serverId` int(11) NOT NULL AUTO_INCREMENT, + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_SERVERS . "` ( + `index` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`serverId`), + PRIMARY KEY (`index`), UNIQUE KEY `login` (`login`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Servers' AUTO_INCREMENT=1;"; - $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error, E_USER_ERROR); - return false; } $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error, E_USER_ERROR); - return false; } $statement->close(); - return true; } /** - * Handle OnInit callback + * Handle OnInit Callback * * @param array $callback */ public function onInit(array $callback) { $mysqli = $this->maniaControl->database->mysqli; - - $login = $this->getLogin(); - $query = "INSERT IGNORE INTO `" . self::TABLE_SERVERS . "` ( - `login` + `login` ) VALUES ( - ? + ? );"; - $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error); - return false; + return; } + $login = $this->getLogin(); $statement->bind_param('s', $login); $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error); $statement->close(); - return false; + return; } - $statement->close(); - - $query = "SELECT serverId FROM `" . self::TABLE_SERVERS . "` WHERE `login` = '" . $login . "';"; - - - $result = $mysqli->query($query); - if(!$result) { - trigger_error($mysqli->error); - } - - $row = $result->fetch_object(); - - $result->close(); - - $this->serverId = $row->serverId; return true; } - /** - * Fetch game data directory + * Fetch Game Data Directory * * @return string */ public function getDataDirectory() { - if(!$this->maniaControl->client->query('GameDataDirectory')) { + if (!$this->maniaControl->client->query('GameDataDirectory')) { trigger_error("Couldn't get data directory. " . $this->maniaControl->getClientErrorText()); return null; } @@ -146,60 +123,80 @@ class Server implements CallbackListener { } /** - * Fetch maps directory + * Fetch Maps Directory * * @return string */ public function getMapsDirectory() { $dataDirectory = $this->getDataDirectory(); - if(!$dataDirectory) { + if (!$dataDirectory) { return null; } return $dataDirectory . 'Maps/'; } /** - * Checks if ManiaControl has access to the given directory + * Checks if ManiaControl has Access to the given Directory * * @param string $directory * @return bool */ public function checkAccess($directory) { - if(!$directory) { - return false; - } + if (!$directory) return false; return (is_dir($directory) && is_writable($directory)); } /** - * Fetch server login + * Fetch Server Index * - * @return array + * @return int */ - public function getLogin() { //TODO save the info locally - $systemInfo = $this->getSystemInfo(); - if(!$systemInfo) { - return null; + public function getIndex() { + if ($this->index) return $this->index; + $mysqli = $this->maniaControl->database->mysqli; + $login = $this->getLogin(); + $query = "SELECT `index` FROM `" . self::TABLE_SERVERS . "` + WHERE `login` = '" . $login . "';"; + $result = $mysqli->query($query); + if (!$result) { + trigger_error($mysqli->error); + return; } - return $systemInfo['ServerLogin']; + $row = $result->fetch_object(); + $result->close(); + $this->index = $row->index; + return $this->index; } /** - * Get server info + * Fetch Server Login + * + * @return string + */ + public function getLogin() { + if ($this->login) return $this->login; + $systemInfo = $this->getSystemInfo(); + if (!$systemInfo) return null; + $this->login = $systemInfo['ServerLogin']; + return $this->login; + } + + /** + * Get the Server Info * * @param bool $detailed * @return array */ public function getInfo($detailed = false) { - if($detailed) { + if ($detailed) { $login = $this->getLogin(); - if(!$this->maniaControl->client->query('GetDetailedPlayerInfo', $login)) { + if (!$this->maniaControl->client->query('GetDetailedPlayerInfo', $login)) { trigger_error("Couldn't fetch detailed server info. " . $this->maniaControl->getClientErrorText()); return null; } return $this->maniaControl->client->getResponse(); } - if(!$this->maniaControl->client->query('GetMainServerPlayerInfo')) { + if (!$this->maniaControl->client->query('GetMainServerPlayerInfo')) { trigger_error("Couldn't fetch server info. " . $this->maniaControl->getClientErrorText()); return null; } @@ -207,12 +204,12 @@ class Server implements CallbackListener { } /** - * Get server options + * Get Server Options * * @return array */ public function getOptions() { - if(!$this->maniaControl->client->query('GetServerOptions')) { + if (!$this->maniaControl->client->query('GetServerOptions')) { trigger_error("Couldn't fetch server options. " . $this->maniaControl->getClientErrorText()); return null; } @@ -220,12 +217,12 @@ class Server implements CallbackListener { } /** - * Fetch server name + * Fetch current Server Name * * @return string */ public function getName() { - if(!$this->maniaControl->client->query('GetServerName')) { + if (!$this->maniaControl->client->query('GetServerName')) { trigger_error("Couldn't fetch server name. " . $this->maniaControl->getClientErrorText()); return null; } @@ -233,12 +230,12 @@ class Server implements CallbackListener { } /** - * Fetch server version + * Fetch Server Version * * @return string */ public function getVersion() { - if(!$this->maniaControl->client->query('GetVersion')) { + if (!$this->maniaControl->client->query('GetVersion')) { trigger_error("Couldn't fetch server version. " . $this->maniaControl->getClientErrorText()); return null; } @@ -246,12 +243,12 @@ class Server implements CallbackListener { } /** - * Fetch server system info + * Fetch Server System Info * * @return array */ public function getSystemInfo() { - if(!$this->maniaControl->client->query('GetSystemInfo')) { + if (!$this->maniaControl->client->query('GetSystemInfo')) { trigger_error("Couldn't fetch server system info. " . $this->maniaControl->getClientErrorText($this->maniaControl->client)); return null; } @@ -259,55 +256,56 @@ class Server implements CallbackListener { } /** - * Fetch current game mode + * Fetch current Game Mode * * @param bool $stringValue - * @param int $parseValue + * @param int $parseValue * @return int | string */ public function getGameMode($stringValue = false, $parseValue = null) { - if(is_int($parseValue)) { + if (is_int($parseValue)) { $gameMode = $parseValue; - } else { - if(!$this->maniaControl->client->query('GetGameMode')) { + } + else { + if (!$this->maniaControl->client->query('GetGameMode')) { trigger_error("Couldn't fetch current game mode. " . $this->maniaControl->getClientErrorText()); return null; } $gameMode = $this->maniaControl->client->getResponse(); } - if($stringValue) { - switch($gameMode) { + if ($stringValue) { + switch ($gameMode) { case 0: - { - return 'Script'; - } + { + return 'Script'; + } case 1: - { - return 'Rounds'; - } + { + return 'Rounds'; + } case 2: - { - return 'TimeAttack'; - } + { + return 'TimeAttack'; + } case 3: - { - return 'Team'; - } + { + return 'Team'; + } case 4: - { - return 'Laps'; - } + { + return 'Laps'; + } case 5: - { - return 'Cup'; - } + { + return 'Cup'; + } case 6: - { - return 'Stunts'; - } + { + return 'Stunts'; + } default: { - return 'Unknown'; + return 'Unknown'; } } } @@ -315,13 +313,13 @@ class Server implements CallbackListener { } /** - * Retrieve validation replay for given player + * Retrieve Validation Replay for the given Player * * @param Player $player * @return string */ public function getValidationReplay(Player $player) { - if(!$this->maniaControl->client->query('GetValidationReplay', $player->login)) { + if (!$this->maniaControl->client->query('GetValidationReplay', $player->login)) { trigger_error("Couldn't get validation replay of '{$player->login}'. " . $this->maniaControl->getClientErrorText()); return null; } @@ -329,32 +327,30 @@ class Server implements CallbackListener { } /** - * Retrieve ghost replay for the given player + * Retrieve Ghost Replay for the given Player * * @param Player $player * @return string */ public function getGhostReplay(Player $player) { $dataDir = $this->getDataDirectory(); - if(!$this->checkAccess($dataDir)) { - return null; - } - + if (!$this->checkAccess($dataDir)) return null; + // Build file name - $map = $this->getMap(); + $map = $this->getMap(); $gameMode = $this->getGameMode(); - $time = time(); + $time = time(); $fileName = "GhostReplays/Ghost.{$player->login}.{$gameMode}.{$time}.{$map['UId']}.Replay.Gbx"; - + // Save ghost replay - if(!$this->maniaControl->client->query('SaveBestGhostsReplay', $player->login, $fileName)) { + if (!$this->maniaControl->client->query('SaveBestGhostsReplay', $player->login, $fileName)) { trigger_error("Couldn't save ghost replay. " . $this->maniaControl->getClientErrorText()); return null; } - + // Load replay file $ghostReplay = file_get_contents($dataDir . 'Replays/' . $fileName); - if(!$ghostReplay) { + if (!$ghostReplay) { trigger_error("Couldn't retrieve saved ghost replay."); return null; } @@ -362,7 +358,7 @@ class Server implements CallbackListener { } /** - * Waits for the server to have the given status + * Wait for the Server to have the given Status * * @param int $statusCode * @return bool @@ -371,24 +367,24 @@ class Server implements CallbackListener { $this->maniaControl->client->query('GetStatus'); $response = $this->maniaControl->client->getResponse(); // Check if server has the given status - if($response['Code'] === 4) { + if ($response['Code'] === 4) { return true; } // Server not yet in given status -> Wait for it... - $waitBegin = time(); + $waitBegin = time(); $maxWaitTime = 20; - $lastStatus = $response['Name']; + $lastStatus = $response['Name']; $this->maniaControl->log("Waiting for server to reach status {$statusCode}..."); $this->maniaControl->log("Current Status: {$lastStatus}"); - while($response['Code'] !== 4) { + while ($response['Code'] !== 4) { sleep(1); $this->maniaControl->client->query('GetStatus'); $response = $this->maniaControl->client->getResponse(); - if($lastStatus !== $response['Name']) { + if ($lastStatus !== $response['Name']) { $this->maniaControl->log("New Status: " . $response['Name']); $lastStatus = $response['Name']; } - if(time() - $maxWaitTime > $waitBegin) { + if (time() - $maxWaitTime > $waitBegin) { // It took too long to reach the status trigger_error("Server couldn't reach status {$statusCode} after {$maxWaitTime} seconds! " . $this->maniaControl->getClientErrorText()); return false; @@ -396,11 +392,4 @@ class Server implements CallbackListener { } return true; } - - /** - * @return int - */ - public function getServerId() { - return $this->serverId; - } } diff --git a/application/core/Statistics/StatisticCollector.php b/application/core/Statistics/StatisticCollector.php index 00a1b37a..e2bc409f 100644 --- a/application/core/Statistics/StatisticCollector.php +++ b/application/core/Statistics/StatisticCollector.php @@ -90,9 +90,9 @@ class StatisticCollector implements CallbackListener { //Write Shoot Data into database if($this->onShootArray[$login] > $this->maniaControl->settingManager->getSetting($this, self::SETTING_ON_SHOOT_PRESTORE)) { - $serverId = $this->maniaControl->server->getServerId(); + $serverIndex = $this->maniaControl->server->getIndex(); $player = $this->maniaControl->playerManager->getPlayer($login); - $this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $serverId, $this->onShootArray[$login]); + $this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $serverIndex, $this->onShootArray[$login]); $this->onShootArray[$login] = 0; } } @@ -114,8 +114,8 @@ class StatisticCollector implements CallbackListener { //Insert Data into Database, and destroy player if(isset($this->onShootArray[$player->login])) { if($this->onShootArray[$player->login] > 0) { - $serverId = $this->maniaControl->server->getServerId(); - $this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $serverId, $this->onShootArray[$player->login]); + $serverIndex = $this->maniaControl->server->getIndex(); + $this->maniaControl->statisticManager->insertStat(self::STAT_ON_SHOOT, $player, $serverIndex, $this->onShootArray[$player->login]); } unset($this->onShootArray[$player->login]); } diff --git a/application/core/Statistics/StatisticManager.php b/application/core/Statistics/StatisticManager.php index f3977b4a..9643e871 100644 --- a/application/core/Statistics/StatisticManager.php +++ b/application/core/Statistics/StatisticManager.php @@ -12,23 +12,22 @@ require_once __DIR__ . '/StatisticCollector.php'; * * @author steeffeen & kremsy */ -//TODO db reference between player index and statsitics playerId -//TODO db reference between metadata statId and statistics statId +// TODO db reference between player index and statsitics playerId +// TODO db reference between metadata statId and statistics statId class StatisticManager { /** * Constants */ const TABLE_STATMETADATA = 'mc_statmetadata'; - const TABLE_STATISTICS = 'mc_statistics'; - - const STAT_TYPE_INT = '0'; + const TABLE_STATISTICS = 'mc_statistics'; + const STAT_TYPE_INT = '0'; const STAT_TYPE_TIME = '1'; - + /** * Public Properties */ public $statisticCollector = null; - + /** * Private Properties */ @@ -43,42 +42,45 @@ class StatisticManager { public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; $this->initTables(); - + $this->statisticCollector = new StatisticCollector($maniaControl); - - //Store Stats MetaData + + // Store Stats MetaData $this->storeStatMetaData(); } /** * Get the value of an statistic * - * @param $statName - * @param $playerId - * @param int $serverId + * @param $statName + * @param $playerId + * @param int $serverIndex * @return int */ - public function getStatisticData($statName, $playerId, $serverId = -1) { + public function getStatisticData($statName, $playerId, $serverIndex = -1) { $mysqli = $this->maniaControl->database->mysqli; $statId = $this->getStatId($statName); - - if($statId == null) { + + if ($statId == null) { return -1; } - - if($serverId == -1) { - $query = "SELECT SUM(value) as value FROM `" . self::TABLE_STATISTICS . "` WHERE `statId` = " . $statId . " AND `playerId` = " . $playerId . ";"; - } else { - $query = "SELECT value FROM `" . self::TABLE_STATISTICS . "` WHERE `statId` = " . $statId . " AND `playerId` = " . $playerId . " AND `serverLogin` = '" . $serverId . "';"; + + if ($serverIndex == -1) { + $query = "SELECT SUM(value) as value FROM `" . self::TABLE_STATISTICS . "` WHERE `statId` = " . $statId . " AND `playerId` = " . $playerId . + ";"; } - + else { + $query = "SELECT value FROM `" . self::TABLE_STATISTICS . "` WHERE `statId` = " . $statId . " AND `playerId` = " . $playerId . + " AND `serverIndex` = '" . $serverIndex . "';"; + } + $result = $mysqli->query($query); - if(!$result) { + if (!$result) { trigger_error($mysqli->error); } - + $row = $result->fetch_object(); - + $result->close(); return $row->value; } @@ -88,88 +90,86 @@ class StatisticManager { */ private function storeStatMetaData() { $mysqli = $this->maniaControl->database->mysqli; - - $query = "SELECT * FROM `" . self::TABLE_STATMETADATA . "`;"; + + $query = "SELECT * FROM `" . self::TABLE_STATMETADATA . "`;"; $result = $mysqli->query($query); - if(!$result) { + if (!$result) { trigger_error($mysqli->error); } - - while($row = $result->fetch_object()) { + + while ($row = $result->fetch_object()) { $this->stats[$row->name] = $row; } - + $result->close(); } /** - * Returns the Stats Id + * Returns the Stats Id * * @param $statName * @return int */ private function getStatId($statName) { - if(isset($this->stats[$statName])) { + if (isset($this->stats[$statName])) { $stat = $this->stats[$statName]; - return (int)$stat->index; - } else { + return (int) $stat->index; + } + else { return null; } } - /** * Get all statistics of a certain palyer * * @param Player $player - * @param int $serverId + * @param int $serverIndex * @return array */ - public function getAllPlayerStats(Player $player, $serverId = -1) { - $playerStats = array(); //TODO improve performence - foreach($this->stats as $stat) { - $value = $this->getStatisticData($stat->name, $player->index, $serverId); + public function getAllPlayerStats(Player $player, $serverIndex = -1) { + $playerStats = array(); // TODO improve performence + foreach ($this->stats as $stat) { + $value = $this->getStatisticData($stat->name, $player->index, $serverIndex); $playerStats[$stat->name] = array($stat, $value); } - + return $playerStats; } /** * Inserts a Stat into the database * - * @param $statName + * @param string $statName * @param Player $player - * @param int $serverId - * @param $value , value to Add + * @param int $serverIndex + * @param mixed $value , value to Add * @param string $statType - * @internal param string $serverLogin * @return bool */ - public function insertStat($statName, $player, $serverId = -1, $value, $statType = self::STAT_TYPE_INT) { + public function insertStat($statName, $player, $serverIndex = -1, $value, $statType = self::STAT_TYPE_INT) { $statId = $this->getStatId($statName); - - if($player == null) { + + if ($player == null) { return false; } - - if($statId == null) { + + if ($statId == null) { return false; } - - if($player->isFakePlayer()) { + + if ($player->isFakePlayer()) { return true; } - - if($serverId == -1) { - $serverId = $this->maniaControl->server->getServerId(); + + if ($serverIndex == -1) { + $serverIndex = $this->maniaControl->server->getIndex(); } - - + $mysqli = $this->maniaControl->database->mysqli; - + $query = "INSERT INTO `" . self::TABLE_STATISTICS . "` ( - `serverId`, + `serverIndex`, `playerId`, `statId`, `value` @@ -177,21 +177,21 @@ class StatisticManager { ?, ?, ?, ? ) ON DUPLICATE KEY UPDATE `value` = `value` + VALUES(`value`);"; - + $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error); return false; } - - $statement->bind_param('iiii', $serverId, $player->index, $statId, $value); + + $statement->bind_param('iiii', $serverIndex, $player->index, $statId, $value); $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error); $statement->close(); return false; } - + $statement->close(); return true; } @@ -199,29 +199,26 @@ class StatisticManager { /** * Increments a Statistic by one * - * @param $statName - * @param \ManiaControl\Players\Player $player - * @param int $serverId - * @internal param string $serverLogin - * @internal param \ManiaControl\Players\Player $playerId + * @param string $statName + * @param Player $player + * @param int $serverIndex * @return bool */ - public function incrementStat($statName, $player, $serverId = -1) { - return $this->insertStat($statName, $player, $serverId, 1); + public function incrementStat($statName, Player $player, $serverIndex = -1) { + return $this->insertStat($statName, $player, $serverIndex, 1); } - /** * Defines a Stat * - * @param $statName + * @param $statName * @param string $type * @param string $statDescription * @return bool */ public function defineStatMetaData($statName, $type = self::STAT_TYPE_INT, $statDescription = '') { - $mysqli = $this->maniaControl->database->mysqli; - $query = "INSERT INTO `" . self::TABLE_STATMETADATA . "` ( + $mysqli = $this->maniaControl->database->mysqli; + $query = "INSERT INTO `" . self::TABLE_STATMETADATA . "` ( `name`, `type`, `description` @@ -231,24 +228,23 @@ class StatisticManager { `type` = VALUES(`type`), `description` = VALUES(`description`);"; $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error); return false; } $statement->bind_param('sis', $statName, $type, $statDescription); $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error); $statement->close(); return false; } - + $statement->close(); - + return true; } - /** * Initialize necessary database tables * @@ -256,7 +252,7 @@ class StatisticManager { */ private function initTables() { $mysqli = $this->maniaControl->database->mysqli; - $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_STATMETADATA . "` ( + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_STATMETADATA . "` ( `index` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL, `type` int(5) NOT NULL, @@ -264,45 +260,45 @@ class StatisticManager { PRIMARY KEY (`index`), UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Statistics Meta Data' AUTO_INCREMENT=1;"; - + $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error, E_USER_ERROR); - + return false; } $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error, E_USER_ERROR); - + return false; } $statement->close(); - + $query = "CREATE TABLE IF NOT EXISTS `" . self::TABLE_STATISTICS . "` ( `index` int(11) NOT NULL AUTO_INCREMENT, - `serverId` int(11) NOT NULL, + `serverIndex` int(11) NOT NULL, `playerId` int(11) NOT NULL, `statId` int(11) NOT NULL, `value` int(20) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`index`), - UNIQUE KEY `unique` (`statId`,`playerId`,`serverId`) + UNIQUE KEY `unique` (`statId`,`playerId`,`serverIndex`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Statistics' AUTO_INCREMENT=1;"; - + $statement = $mysqli->prepare($query); - if($mysqli->error) { + if ($mysqli->error) { trigger_error($mysqli->error, E_USER_ERROR); - + return false; } $statement->execute(); - if($statement->error) { + if ($statement->error) { trigger_error($statement->error, E_USER_ERROR); - + return false; } $statement->close(); - + return true; } } \ No newline at end of file diff --git a/application/plugins/Donations.php b/application/plugins/Donations.php index 73e87e36..466eb458 100644 --- a/application/plugins/Donations.php +++ b/application/plugins/Donations.php @@ -424,8 +424,8 @@ class DonationPlugin implements CallbackListener, CommandListener, Plugin { $message = 'Donation successful! Thanks.'; } $this->maniaControl->chat->sendSuccess($message, $login); - $this->maniaControl->statisticManager->insertStat(self::STAT_PLAYER_DONATIONS, $player, - $this->maniaControl->server->getServerId(), $amount); + $serverIndex = $this->maniaControl->server->getIndex(); + $this->maniaControl->statisticManager->insertStat(self::STAT_PLAYER_DONATIONS, $player, $serverIndex, $amount); } } else { diff --git a/application/plugins/Karma.php b/application/plugins/Karma.php index 5568daa5..946fc550 100644 --- a/application/plugins/Karma.php +++ b/application/plugins/Karma.php @@ -272,7 +272,8 @@ class KarmaPlugin implements CallbackListener, Plugin { $voted = $this->getPlayerVote($player, $map); var_dump($voted); if(!$voted){ - $this->maniaControl->statisticManager->incrementStat(self::STAT_PLAYER_MAPVOTES, $player, $this->maniaControl->server->getServerId()); + $serverIndex = $this->maniaControl->server->getIndex(); + $this->maniaControl->statisticManager->incrementStat(self::STAT_PLAYER_MAPVOTES, $player, $serverIndex); } $success = $this->savePlayerVote($player, $map, $vote);