mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-29 18:59:21 +02:00
Fixed highscores being broken when cache system is enabled.
Highscore cache data now stores vocation group store data, and flag value if enabled in config.php No extra queries are being made after the scores have been loaded from cache.
This commit is contained in:
parent
0c20be5c7e
commit
deddeb462c
47
config.php
47
config.php
@ -263,17 +263,44 @@
|
|||||||
'limit' => 20, //Number of players that it will show.
|
'limit' => 20, //Number of players that it will show.
|
||||||
);
|
);
|
||||||
|
|
||||||
// Vocation ids and names.
|
// Vocation IDs, names and which vocation ID they got promoted from
|
||||||
$config['vocations'] = array(
|
$config['vocations'] = array(
|
||||||
0 => 'No vocation',
|
0 => array(
|
||||||
1 => 'Sorcerer',
|
'name' => 'No vocation',
|
||||||
2 => 'Druid',
|
'fromVoc' => false
|
||||||
3 => 'Paladin',
|
),
|
||||||
4 => 'Knight',
|
1 => array(
|
||||||
5 => 'Master Sorcerer',
|
'name' => 'Sorcerer',
|
||||||
6 => 'Elder Druid',
|
'fromVoc' => false
|
||||||
7 => 'Royal Paladin',
|
),
|
||||||
8 => 'Elite Knight',
|
2 => array(
|
||||||
|
'name' => 'Druid',
|
||||||
|
'fromVoc' => false
|
||||||
|
),
|
||||||
|
3 => array(
|
||||||
|
'name' => 'Paladin',
|
||||||
|
'fromVoc' => false
|
||||||
|
),
|
||||||
|
4 => array(
|
||||||
|
'name' => 'Knight',
|
||||||
|
'fromVoc' => false
|
||||||
|
),
|
||||||
|
5 => array(
|
||||||
|
'name' => 'Master Sorcerer',
|
||||||
|
'fromVoc' => 1
|
||||||
|
),
|
||||||
|
6 => array(
|
||||||
|
'name' => 'Elder Druid',
|
||||||
|
'fromVoc' => 2
|
||||||
|
),
|
||||||
|
7 => array(
|
||||||
|
'name' => 'Royal Paladin',
|
||||||
|
'fromVoc' => 3
|
||||||
|
),
|
||||||
|
8 => array(
|
||||||
|
'name' => 'Elite Knight',
|
||||||
|
'fromVoc' => 4
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Vocation stat gains per level
|
/* Vocation stat gains per level
|
||||||
|
@ -349,7 +349,7 @@ function online_id_to_name($id) {
|
|||||||
// Parameter: players.vocation_id. Returns: Configured vocation name.
|
// Parameter: players.vocation_id. Returns: Configured vocation name.
|
||||||
function vocation_id_to_name($id) {
|
function vocation_id_to_name($id) {
|
||||||
$vocations = config('vocations');
|
$vocations = config('vocations');
|
||||||
return ($vocations[$id] >= 0) ? $vocations[$id] : false;
|
return ($vocations[$id] >= 0) ? $vocations[$id]['name'] : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parameter: players.group_id. Returns: Configured group name.
|
// Parameter: players.group_id. Returns: Configured group name.
|
||||||
|
@ -885,39 +885,99 @@ function user_character_list_count($account_id) {
|
|||||||
// END MY ACCOUNT RELATED
|
// END MY ACCOUNT RELATED
|
||||||
|
|
||||||
// HIGHSCORE FUNCTIONS \\
|
// HIGHSCORE FUNCTIONS \\
|
||||||
function fetchAllScores($rows, $tfs, $g, $v = -1) {
|
function fetchAllScores($rows, $tfs, $g, $vlist, $v = -1, $flags = false) {
|
||||||
// Return scores ordered by type and vocation (if set)
|
// Return scores ordered by type and vocation (if set)
|
||||||
$data = array();
|
$data = array();
|
||||||
if ($tfs == 'TFS_10') {
|
|
||||||
|
|
||||||
// Generate SQL WHERE-clause for vocation if $v is set
|
// Add "all" as a simulated vocation in vocation_list to represent all vocations and loop through them.
|
||||||
$v = ($v > -1) ? 'AND `vocation` = '. intval($v) : NULL;
|
$vocGroups = array(
|
||||||
|
'all' => array()
|
||||||
|
);
|
||||||
|
foreach ($vlist AS $vid => $vdata) {
|
||||||
|
// If this vocation does not have a fromVoc attribute
|
||||||
|
if ($vdata['fromVoc'] === false) {
|
||||||
|
// Add it as a group
|
||||||
|
$vocGroups[(string)$vid] = array();
|
||||||
|
} else {
|
||||||
|
// Add an extended group for both vocations
|
||||||
|
$sharedGroup = (string)$vdata['fromVoc'] . ", " . (string)$vid;
|
||||||
|
$vocGroups[$sharedGroup] = array();
|
||||||
|
|
||||||
$data[1] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_club` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_club` DESC LIMIT 0, $rows;");
|
// Make the fromVoc group a reference to the extended group for both vocations
|
||||||
$data[2] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_sword` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_sword` DESC LIMIT 0, $rows;");
|
$vocGroups[(string)$vdata['fromVoc']] = $sharedGroup;
|
||||||
$data[3] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_axe` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_axe` DESC LIMIT 0, $rows;");
|
$vocGroups[(string)$vid] = $sharedGroup;
|
||||||
$data[4] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_dist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_dist` DESC LIMIT 0, $rows;");
|
}
|
||||||
$data[5] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_shielding` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_shielding` DESC LIMIT 0, $rows;");
|
|
||||||
$data[6] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fishing` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fishing` DESC LIMIT 0, $rows;");
|
|
||||||
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC LIMIT 0, $rows;");
|
|
||||||
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC LIMIT 0, $rows;");
|
|
||||||
$data[9] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fist` DESC LIMIT 0, $rows;");
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Generate SQL WHERE-clause for vocation if $v is set
|
|
||||||
$v = ($v > -1) ? 'AND `p`.`vocation` = '. intval($v) : NULL;
|
|
||||||
|
|
||||||
$data[9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
|
||||||
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC limit 0, $rows;");
|
|
||||||
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC limit 0, $rows;");
|
|
||||||
}
|
}
|
||||||
return $data;
|
|
||||||
|
foreach ($vocGroups as $voc_id => $key_or_arr) {
|
||||||
|
|
||||||
|
$vGrp = $voc_id;
|
||||||
|
// Change to correct vocation group if this vocation id reference a shared vocation group
|
||||||
|
if (!is_array($key_or_arr)) $vGrp = $key_or_arr;
|
||||||
|
|
||||||
|
// If this vocation group is empty (then we need to fill it with highscore SQL Data)
|
||||||
|
if (empty($vocGroups[$vGrp])) {
|
||||||
|
|
||||||
|
// Generate SQL WHERE-clause for vocation if $v is set
|
||||||
|
$v = '';
|
||||||
|
if ($vGrp !== 'all')
|
||||||
|
$v = (strpos($vGrp, ',') !== false) ? 'AND `p`.`vocation` IN ('. $vGrp . ')' : 'AND `p`.`vocation` = \''.intval($vGrp).'\'';
|
||||||
|
|
||||||
|
if ($tfs == 'TFS_10') {
|
||||||
|
|
||||||
|
if ($flags === false) { // In this case we only need to query players table
|
||||||
|
$v = str_replace('`p`.', '', $v);
|
||||||
|
|
||||||
|
$vocGroups[$vGrp][1] = mysql_select_multi("SELECT `name`, `vocation`, `skill_club` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_club` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][2] = mysql_select_multi("SELECT `name`, `vocation`, `skill_sword` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_sword` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][3] = mysql_select_multi("SELECT `name`, `vocation`, `skill_axe` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_axe` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][4] = mysql_select_multi("SELECT `name`, `vocation`, `skill_dist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_dist` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][5] = mysql_select_multi("SELECT `name`, `vocation`, `skill_shielding` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_shielding` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][6] = mysql_select_multi("SELECT `name`, `vocation`, `skill_fishing` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fishing` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][7] = mysql_select_multi("SELECT `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][8] = mysql_select_multi("SELECT `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][9] = mysql_select_multi("SELECT `name`, `vocation`, `skill_fist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fist` DESC LIMIT 0, $rows;");
|
||||||
|
|
||||||
|
} else { // Inner join znote_accounts table to retrieve the flag
|
||||||
|
$vocGroups[$vGrp][1] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_club` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_club` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][2] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_sword` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_sword` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][3] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_axe` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_axe` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][4] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_dist` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_dist` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][5] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_shielding` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_shielding` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][6] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_fishing` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_fishing` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][7] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`experience`, `level` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`experience` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][8] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`maglevel` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`maglevel` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][9] = mysql_select_multi("SELECT `p`.`name`, `p`.`vocation`, `p`.`skill_fist` AS `value`, `za`.`flag` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`skill_fist` DESC LIMIT 0, $rows;");
|
||||||
|
}
|
||||||
|
} else { // TFS 0.2, 0.3, 0.4
|
||||||
|
|
||||||
|
if ($flags === false) {
|
||||||
|
$vocGroups[$vGrp][9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$v = str_replace('`p`.', '', $v);
|
||||||
|
$vocGroups[$vGrp][7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC limit 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC limit 0, $rows;");
|
||||||
|
|
||||||
|
} else { // Inner join znote_accounts table to retrieve the flag
|
||||||
|
$vocGroups[$vGrp][9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s`, `za`.`flag` AS `flag` INNER JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][7] = mysql_select_multi("SELECT `p`.`id`, `p`.`name`, `p`.`vocation`, `p`.`experience`, `p`.`level` AS `value` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`experience` DESC limit 0, $rows;");
|
||||||
|
$vocGroups[$vGrp][8] = mysql_select_multi("SELECT `p`.`id`, `p`.`name`, `p`.`vocation`, `p`.`maglevel` AS `value` FROM `players` AS `p` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id`=`za`.`account_id` WHERE `p`.`group_id` < $g $v ORDER BY `p`.`maglevel` DESC limit 0, $rows;");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $vocGroups;
|
||||||
}
|
}
|
||||||
// END HIGHSCORE FUNCTIONS
|
// END HIGHSCORE FUNCTIONS
|
||||||
|
|
||||||
|
@ -9,8 +9,18 @@ $type = (isset($_GET['type'])) ? (int)getValue($_GET['type']) : 7;
|
|||||||
if ($type > 9) $type = 7;
|
if ($type > 9) $type = 7;
|
||||||
|
|
||||||
// Fetch highscore vocation
|
// Fetch highscore vocation
|
||||||
$vocation = (isset($_GET['vocation'])) ? (int)getValue($_GET['vocation']) : -1;
|
$configVocations = $config['vocations'];
|
||||||
if ($vocation > 8) $vocation = -1;
|
//$debug['configVocations'] = $configVocations;
|
||||||
|
|
||||||
|
$vocationIds = array_keys($configVocations);
|
||||||
|
|
||||||
|
$vocation = 'all';
|
||||||
|
if (isset($_GET['vocation']) && is_numeric($_GET['vocation'])) {
|
||||||
|
$vocation = (int)$_GET['vocation'];
|
||||||
|
if (!in_array($vocation, $vocationIds)) {
|
||||||
|
$vocation = "all";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Fetch highscore page
|
// Fetch highscore page
|
||||||
$page = getValue(@$_GET['page']);
|
$page = getValue(@$_GET['page']);
|
||||||
@ -43,18 +53,22 @@ function pageCheck($index, $page, $rowPerPage) {
|
|||||||
|
|
||||||
$cache = new Cache('engine/cache/highscores');
|
$cache = new Cache('engine/cache/highscores');
|
||||||
if ($cache->hasExpired()) {
|
if ($cache->hasExpired()) {
|
||||||
$scores = fetchAllScores($rows, $config['TFSVersion'], $highscore['ignoreGroupId'], $vocation);
|
$vocGroups = fetchAllScores($rows, $config['TFSVersion'], $highscore['ignoreGroupId'], $configVocations, $vocation, $config['country_flags']);
|
||||||
|
|
||||||
$cache->setContent($scores);
|
$cache->setContent($vocGroups);
|
||||||
$cache->save();
|
$cache->save();
|
||||||
} else {
|
} else {
|
||||||
$scores = $cache->load();
|
$vocGroups = $cache->load();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($scores) {
|
if ($vocGroups) {
|
||||||
|
$vocGroup = (is_array($vocGroups[$vocation])) ? $vocGroups[$vocation] : $vocGroups[$vocGroups[$vocation]];
|
||||||
?>
|
?>
|
||||||
<h1>Ranking for <?php echo skillName($type) .", ". (($vocation < 0) ? 'any vocation' : vocation_id_to_name($vocation)) ?>.</h1>
|
|
||||||
|
<h1>Ranking for <?php echo skillName($type) .", ". (($vocation === 'all') ? 'any vocation' : vocation_id_to_name($vocation)) ?>.</h1>
|
||||||
|
|
||||||
<form action="" method="GET">
|
<form action="" method="GET">
|
||||||
|
|
||||||
<select name="type">
|
<select name="type">
|
||||||
<option value="7" <?php if ($type == 7) echo "selected"; ?>>Experience</option>
|
<option value="7" <?php if ($type == 7) echo "selected"; ?>>Experience</option>
|
||||||
<option value="8" <?php if ($type == 8) echo "selected"; ?>>Magic</option>
|
<option value="8" <?php if ($type == 8) echo "selected"; ?>>Magic</option>
|
||||||
@ -66,20 +80,22 @@ if ($scores) {
|
|||||||
<option value="6" <?php if ($type == 6) echo "selected"; ?>>Fish</option>
|
<option value="6" <?php if ($type == 6) echo "selected"; ?>>Fish</option>
|
||||||
<option value="9" <?php if ($type == 9) echo "selected"; ?>>Fist</option>
|
<option value="9" <?php if ($type == 9) echo "selected"; ?>>Fist</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select name="vocation">
|
<select name="vocation">
|
||||||
<option value="-1" <?php if ($vocation < 0) echo "selected"; ?>>Any vocation</option>
|
<option value="all" <?php if (!is_int($vocation)) echo "selected"; ?>>Any vocation</option>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
foreach (config('vocations') as $v_id => $v_name) {
|
foreach ($configVocations as $v_id => $v_data) {
|
||||||
$selected = ($vocation == $v_id) ? " selected" : NULL;
|
if ($v_data['fromVoc'] === false) {
|
||||||
|
$selected = (is_int($vocation) && $vocation == $v_id) ? " selected $vocation = $v_id" : "";
|
||||||
echo '<option value="'. $v_id .'"'. $selected .'>'. $v_name .'</option>';
|
echo '<option value="'. $v_id .'"'. $selected .'>'. $v_data['name'] .'</option>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select name="page">
|
<select name="page">
|
||||||
<?php
|
<?php
|
||||||
$pages = ceil(min(($highscore['rows'] / $highscore['rowsPerPage']), (count($scores[$type]) / $highscore['rowsPerPage'])));
|
$pages = ceil(min(($highscore['rows'] / $highscore['rowsPerPage']), (count($vocGroup[$type]) / $highscore['rowsPerPage'])));
|
||||||
for ($i = 0; $i < $pages; $i++) {
|
for ($i = 0; $i < $pages; $i++) {
|
||||||
$x = $i + 1;
|
$x = $i + 1;
|
||||||
if ($x == $page) echo "<option value='".$x."' selected>Page: ".$x."</option>";
|
if ($x == $page) echo "<option value='".$x."' selected>Page: ".$x."</option>";
|
||||||
@ -87,9 +103,12 @@ if ($scores) {
|
|||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<input type="submit" value=" View " class="btn btn-info">
|
<input type="submit" value=" View " class="btn btn-info">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<table id="highscoresTable" class="table table-striped table-hover">
|
<table id="highscoresTable" class="table table-striped table-hover">
|
||||||
|
|
||||||
<tr class="yellow">
|
<tr class="yellow">
|
||||||
<td>Rank</td>
|
<td>Rank</td>
|
||||||
<td>Name</td>
|
<td>Name</td>
|
||||||
@ -97,9 +116,11 @@ if ($scores) {
|
|||||||
<td>Level</td>
|
<td>Level</td>
|
||||||
<?php if ($type === 7) echo "<td>Points</td>"; ?>
|
<?php if ($type === 7) echo "<td>Points</td>"; ?>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
for ($i = 0; $i < count($scores[$type]); $i++) {
|
for ($i = 0; $i < count($vocGroup[$type]); $i++) {
|
||||||
if ($scores[$type] === false) {
|
|
||||||
|
if ($vocGroup[$type] === false) {
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5">Nothing to show here yet.</td>
|
<td colspan="5">Nothing to show here yet.</td>
|
||||||
@ -107,25 +128,22 @@ if ($scores) {
|
|||||||
<?php
|
<?php
|
||||||
} else {
|
} else {
|
||||||
if (pageCheck($i, $page, $rowsPerPage)) {
|
if (pageCheck($i, $page, $rowsPerPage)) {
|
||||||
$profile_data = user_character_data($scores[$type][$i]['id'], 'account_id');
|
$flag = ($config['country_flags'] === true && strlen($vocGroup[$type][$i]['flag']) > 1) ? '<img src="flags/' . $vocGroup[$type][$i]['flag'] . '.png"> ' : '';
|
||||||
|
|
||||||
$account_data = user_znote_account_data($profile_data['account_id'], 'flag');
|
|
||||||
if ($config['country_flags'] === true && count($account_data['flag']) > 1) $flag = '<img src="flags/' . $account_data['flag'] . '.png"> ';
|
|
||||||
else $flag = '';
|
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?php echo $i+1; ?></td>
|
<td><?php echo $i+1; ?></td>
|
||||||
<td><?php echo $flag; ?><a href="characterprofile.php?name=<?php echo $scores[$type][$i]['name']; ?>"><?php echo $scores[$type][$i]['name']; ?></a></td>
|
<td><?php echo $flag; ?><a href="characterprofile.php?name=<?php echo $vocGroup[$type][$i]['name']; ?>"><?php echo $vocGroup[$type][$i]['name']; ?></a></td>
|
||||||
<td><?php echo vocation_id_to_name($scores[$type][$i]['vocation']); ?></td>
|
<td><?php echo vocation_id_to_name($vocGroup[$type][$i]['vocation']); ?></td>
|
||||||
<td><?php echo $scores[$type][$i]['value']; ?></td>
|
<td><?php echo $vocGroup[$type][$i]['value']; ?></td>
|
||||||
<?php if ($type === 7) echo "<td>". $scores[$type][$i]['experience'] ."</td>"; ?>
|
<?php if ($type === 7) echo "<td>". $vocGroup[$type][$i]['experience'] ."</td>"; ?>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
include 'layout/overall/footer.php'; ?>
|
include 'layout/overall/footer.php'; ?>
|
Loading…
x
Reference in New Issue
Block a user