public function remove($penguin) { Logger::Debug("Removing penguino"); foreach ($this->penguinsByDatabases as $databaseIndex => $penguinArray) { if (($penguinIndex = array_search($penguin, $penguinArray)) !== false) { Logger::Debug("Penguino found! Removing"); unset($this->penguinsByDatabases[$databaseIndex][$penguinIndex]); if (count($this->penguinsByDatabases[$databaseIndex]) == 0) { Logger::Info("Removing empty database object"); unset($this->penguinsByDatabases[$databaseIndex]); unset($this->databaseConnections[$databaseIndex]); } return true; } else { Logger::Debug("Sorry, penguino not found. :-( {$penguinIndex}"); } } }
protected function handleDisconnect($socket) { $penguin = $this->penguins[$socket]; $this->removePenguin($penguin); Logger::Info("Player disconnected"); }
public function loadPlugins($pluginsDirectory) { if (!is_dir($pluginsDirectory)) { Logger::Error("Plugins directory ({$pluginsDirectory}) does not exist!"); } else { $pluginFolders = scandir($pluginsDirectory); $pluginFolders = array_splice($pluginFolders, 2); $pluginFolders = array_filter($pluginFolders, function ($pluginFolder) { if ($pluginFolder != "Base") { return true; } }); foreach ($pluginFolders as $pluginFolder) { $folderPath = sprintf("%s%s", $pluginsDirectory, $pluginFolder); $this->loadPluginFolder($folderPath); } // Check dependencies $this->checkPluginDependencies(); $pluginCount = sizeof($this->loadedPlugins); if ($pluginCount != 0) { Logger::Info(sprintf("Loaded %d plugin(s): %s", $pluginCount, implode(', ', array_keys($this->loadedPlugins)))); } else { Logger::Info("No plugins loaded"); } } }
protected function handleModeratorBan($socket) { $penguin = $this->penguins[$socket]; $player = Packet::$Data[2]; $banType = Packet::$Data[3]; $banReason = Packet::$Data[4]; $banDuration = Packet::$Data[5]; $penguinName = Packet::$Data[6]; $banNotes = Packet::$Data[7]; if ($penguin->moderator) { if (is_numeric($player)) { $targetPlayer = $this->getPlayerById($player); if ($targetPlayer !== null) { if ($banDuration !== 0) { $targetPlayer->database->updateColumnById($targetPlayer->id, "Banned", strtotime("+" . $banDuration . " hours")); } else { $targetPlayer->database->updateColumnById($targetPlayer->id, "Banned", "perm"); } $penguin->database->addBan($player, $penguin->username, $banNotes, $banDuration, $banType); $targetPlayer->send("%xt%ban%-1%{$banType}%{$banReason}%{$banDuration}%{$banNotes}%"); $this->removePenguin($targetPlayer); Logger::Info("{$penguin->username} has banned {$targetPlayer->username} for {$banDuration} hours"); } } } }