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');
 }