function show() { global $USER, $LNG, $reslist; $db = Database::get(); $sql = "SELECT elementID, level, userID, username\n\t\tFROM %%USERS%%\n\t\tINNER JOIN %%RECORDS%% ON userID = id\n\t\tWHERE universe = :universe;"; $recordResult = $db->select($sql, array(':universe' => Universe::current())); $defenseList = array_fill_keys($reslist['defense'], array()); $fleetList = array_fill_keys($reslist['fleet'], array()); $researchList = array_fill_keys($reslist['tech'], array()); $buildList = array_fill_keys($reslist['build'], array()); foreach ($recordResult as $recordRow) { if (in_array($recordRow['elementID'], $reslist['defense'])) { $defenseList[$recordRow['elementID']][] = $recordRow; } elseif (in_array($recordRow['elementID'], $reslist['fleet'])) { $fleetList[$recordRow['elementID']][] = $recordRow; } elseif (in_array($recordRow['elementID'], $reslist['tech'])) { $researchList[$recordRow['elementID']][] = $recordRow; } elseif (in_array($recordRow['elementID'], $reslist['build'])) { $buildList[$recordRow['elementID']][] = $recordRow; } } require_once 'includes/classes/Cronjob.class.php'; $this->assign(array('defenseList' => $defenseList, 'fleetList' => $fleetList, 'researchList' => $researchList, 'buildList' => $buildList, 'update' => _date($LNG['php_tdformat'], Cronjob::getLastExecutionTime('statistic'), $USER['timezone']))); $this->display('page.records.default.tpl'); }
function show() { global $USER, $LNG; $who = HTTP::_GP('who', 1); $type = HTTP::_GP('type', 1); $range = HTTP::_GP('range', 1); switch ($type) { case 2: $Order = "fleet_rank"; $Points = "fleet_points"; $Rank = "fleet_rank"; $OldRank = "fleet_old_rank"; break; case 3: $Order = "tech_rank"; $Points = "tech_points"; $Rank = "tech_rank"; $OldRank = "tech_old_rank"; break; case 4: $Order = "build_rank"; $Points = "build_points"; $Rank = "build_rank"; $OldRank = "build_old_rank"; break; case 5: $Order = "defs_rank"; $Points = "defs_points"; $Rank = "defs_rank"; $OldRank = "defs_old_rank"; break; default: $Order = "total_rank"; $Points = "total_points"; $Rank = "total_rank"; $OldRank = "total_old_rank"; break; } $RangeList = array(); $db = Database::get(); $config = Config::get(); switch ($who) { case 1: $MaxUsers = $config->users_amount; $range = min($range, $MaxUsers); $LastPage = max(1, ceil($MaxUsers / 100)); for ($Page = 0; $Page < $LastPage; $Page++) { $PageValue = $Page * 100 + 1; $PageRange = $PageValue + 99; $Selector['range'][$PageValue] = $PageValue . "-" . $PageRange; } $start = max(floor(($range - 1) / 100) * 100, 0); if ($config->stat == 2) { $sql = "SELECT DISTINCT s.*, u.id, u.username, u.ally_id, a.ally_name FROM %%STATPOINTS%% as s\n\t\t\t\t\tINNER JOIN %%USERS%% as u ON u.id = s.id_owner\n\t\t\t\t\tLEFT JOIN %%ALLIANCE%% as a ON a.id = s.id_ally\n\t\t\t\t\tWHERE s.universe = :universe AND s.stat_type = 1 AND u.authlevel < :authLevel\n\t\t\t\t\tORDER BY " . $Order . " ASC LIMIT :offset, :limit;"; $query = $db->select($sql, array(':universe' => Universe::current(), ':authLevel' => $config->stat_level, ':offset' => $start, ':limit' => 100)); } else { $sql = "SELECT DISTINCT s.*, u.id, u.username, u.ally_id, a.ally_name FROM %%STATPOINTS%% as s\n\t\t\t\t\tINNER JOIN %%USERS%% as u ON u.id = s.id_owner\n\t\t\t\t\tLEFT JOIN %%ALLIANCE%% as a ON a.id = s.id_ally\n\t\t\t\t\tWHERE s.universe = :universe AND s.stat_type = 1\n\t\t\t\t\tORDER BY " . $Order . " ASC LIMIT :offset, :limit;"; $query = $db->select($sql, array(':universe' => Universe::current(), ':offset' => $start, ':limit' => 100)); } $RangeList = array(); foreach ($query as $StatRow) { $RangeList[] = array('id' => $StatRow['id'], 'name' => $StatRow['username'], 'points' => pretty_number($StatRow[$Points]), 'allyid' => $StatRow['ally_id'], 'rank' => $StatRow[$Rank], 'allyname' => $StatRow['ally_name'], 'ranking' => $StatRow[$OldRank] - $StatRow[$Rank]); } break; case 2: $sql = "SELECT COUNT(*) as state FROM %%ALLIANCE%% WHERE `ally_universe` = :universe;"; $MaxAllys = $db->selectSingle($sql, array(':universe' => Universe::current()), 'state'); $range = min($range, $MaxAllys); $LastPage = max(1, ceil($MaxAllys / 100)); for ($Page = 0; $Page < $LastPage; $Page++) { $PageValue = $Page * 100 + 1; $PageRange = $PageValue + 99; $Selector['range'][$PageValue] = $PageValue . "-" . $PageRange; } $start = max(floor(($range - 1) / 100) * 100, 0); $sql = 'SELECT DISTINCT s.*, a.id, a.ally_members, a.ally_name FROM %%STATPOINTS%% as s INNER JOIN %%ALLIANCE%% as a ON a.id = s.id_owner WHERE universe = :universe AND stat_type = 2 ORDER BY ' . $Order . ' ASC LIMIT :offset, :limit;'; $query = $db->select($sql, array(':universe' => Universe::current(), ':offset' => $start, ':limit' => 100)); foreach ($query as $StatRow) { $RangeList[] = array('id' => $StatRow['id'], 'name' => $StatRow['ally_name'], 'members' => $StatRow['ally_members'], 'rank' => $StatRow[$Rank], 'mppoints' => pretty_number(floor($StatRow[$Points] / $StatRow['ally_members'])), 'points' => pretty_number($StatRow[$Points]), 'ranking' => $StatRow[$OldRank] - $StatRow[$Rank]); } break; } $Selector['who'] = array(1 => $LNG['st_player'], 2 => $LNG['st_alliance']); $Selector['type'] = array(1 => $LNG['st_points'], 2 => $LNG['st_fleets'], 3 => $LNG['st_researh'], 4 => $LNG['st_buildings'], 5 => $LNG['st_defenses']); require_once 'includes/classes/Cronjob.class.php'; $this->assign(array('Selectors' => $Selector, 'who' => $who, 'type' => $type, 'range' => floor(($range - 1) / 100) * 100 + 1, 'RangeList' => $RangeList, 'CUser_ally' => $USER['ally_id'], 'CUser_id' => $USER['id'], 'stat_date' => _date($LNG['php_tdformat'], Cronjob::getLastExecutionTime('statistic'), $USER['timezone']))); $this->display('page.statistics.default.tpl'); }