/** * Live Scoreboard * * @return array * @internal param int $id Server ID */ public function population() { // Get active servers only $servers = Server::active()->get(); // Sum the used slots $usedSlots = $servers->sum('usedSlots'); // Sum the max slots $totalSlots = $servers->sum('maxSlots'); // Init array $newCollection = []; foreach ($servers as $server) { // Convert the game name to lowercase $gameKey = strtolower($server->game->Name); // Add the server to the collection $newCollection[$gameKey]['servers'][] = $server; } foreach ($newCollection as $key => $collection) { $online = 0; $total = 0; foreach ($collection['servers'] as $server) { $online += $server->usedSlots; $total += $server->maxSlots; } $newCollection[$key]['stats'] = ['online' => $online, 'totalSlots' => $total, 'percentage' => MainHelper::percent($online, $total)]; } return MainHelper::response(['online' => $usedSlots, 'totalSlots' => $totalSlots, 'percentage' => MainHelper::percent($usedSlots, $totalSlots), 'games' => $newCollection] + Lang::get('dashboard.population'), null, null, null, false, true); }
/** * Shows the live scoreboard */ public function scoreboard() { $servers = ['-1' => 'Select Server…']; Server::active()->get()->each(function ($server) use(&$servers) { $servers[$server->game->Name][$server->ServerID] = $server->ServerName; }); if ($this->isLoggedIn && $this->user->ability(null, Cache::get('admin.perm.list')['scoreboard'])) { $perms = $this->user->ability(null, Cache::get('admin.perm.list')['scoreboard'], ['return_type' => 'array']); $permissions = $perms['permissions']; $validPermissions = $this->user->roles[0]->perms->filter(function ($perm) use(&$permissions) { if (array_key_exists($perm->name, $permissions) && $permissions[$perm->name]) { return true; } })->map(function ($perm) { $p = clone $perm; $p->name = explode('.', $perm->name)[2]; return $p; })->lists('display_name', 'name'); $adminview = View::make('partials.scoreboard.admin.admin', compact('validPermissions', 'presetMessages'))->render(); } else { $adminview = null; } return View::make('scoreboard', compact('servers', 'adminview'))->with('page_title', Lang::get('navigation.main.items.scoreboard.title')); }
public function index() { $servers = Server::active()->with('stats')->get(); return View::make('servers', compact('servers')); }