mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-10-13 18:04:54 +02:00
Improved flags system & reduce query usage in online list
Using http://flag.znote.eu as an external image server for flags. Online list is now stored in a 30 seconds quick cache. Reduced query usage in online list to 1 instead of 1 + players online amounts of queries.
This commit is contained in:
@@ -2,8 +2,30 @@
|
||||
|
||||
<h1>Who is online?</h1>
|
||||
<?php
|
||||
$array = online_list();
|
||||
if ($array) {
|
||||
|
||||
// Returns a list of players online
|
||||
$array = false;
|
||||
$loadFlags = ($config['country_flags']['enabled'] && $config['country_flags']['onlinelist']) ? true : false;
|
||||
|
||||
// Small 30 seconds players_online cache.
|
||||
$cache = new Cache('engine/cache/onlinelist');
|
||||
$cache->setExpiration(30);
|
||||
if ($cache->hasExpired()) {
|
||||
// Load online list data from SQL
|
||||
if ($config['TFSVersion'] == 'TFS_10') {
|
||||
$array = ($loadFlags === true) ? mysql_select_multi("SELECT `p`.`name` AS `name`, `p`.`level` AS `level`, `p`.`vocation` AS `vocation`, `g`.`name` AS `gname`, `za`.`flag` AS `flag` FROM `players_online` AS `o` INNER JOIN `players` AS `p` ON `o`.`player_id` = `p`.`id` INNER JOIN `znote_accounts` AS `za` ON `p`.`account_id` = `za`.`account_id` LEFT JOIN `guild_membership` AS `gm` ON `o`.`player_id` = `gm`.`player_id` LEFT JOIN `guilds` AS `g` ON `gm`.`guild_id` = `g`.`id`;") : mysql_select_multi("SELECT `p`.`name` AS `name`, `p`.`level` AS `level`, `p`.`vocation` AS `vocation`, `g`.`name` AS `gname` FROM `players_online` AS `o` INNER JOIN `players` AS `p` ON `o`.`player_id` = `p`.`id` LEFT JOIN `guild_membership` AS `gm` ON `o`.`player_id` = `gm`.`player_id` LEFT JOIN `guilds` AS `g` ON `gm`.`guild_id` = `g`.`id`;");
|
||||
} else {
|
||||
$array = ($loadFlags === true) ? mysql_select_multi("SELECT `p`.`name` as `name`, `p`.`level` as `level`, `p`.`vocation` as `vocation`, `g`.`name` as `gname`, `za`.`flag` as `flag` FROM `players` as `p` INNER JOIN `znote_accounts` as `za` ON `za`.`account_id` = `p`.`account_id` LEFT JOIN `guild_ranks` as `gr` ON `gr`.`id` = `p`.`rank_id` LEFT JOIN `guilds` as `g` ON `gr`.`guild_id` = `g`.`id` WHERE `p`.`online` = '1' ORDER BY `p`.`name` DESC;") : mysql_select_multi("SELECT `p`.`name` as `name`, `p`.`level` as `level`, `p`.`vocation` as `vocation`, `g`.`name` as `gname` FROM `players` as `p` LEFT JOIN `guild_ranks` as `gr` ON `gr`.`id` = `p`.`rank_id` LEFT JOIN `guilds` as `g` ON `gr`.`guild_id` = `g`.`id` WHERE `p`.`online` = '1' ORDER BY `p`.`name` DESC;");
|
||||
}
|
||||
// End loading data from SQL
|
||||
$cache->setContent($array);
|
||||
$cache->save();
|
||||
} else {
|
||||
$array = $cache->load();
|
||||
}
|
||||
// End cache
|
||||
|
||||
if ($array !== false) {
|
||||
?>
|
||||
|
||||
<table id="onlinelistTable" class="table table-striped table-hover">
|
||||
@@ -13,17 +35,21 @@ if ($array) {
|
||||
<th>Level:</th>
|
||||
<th>Vocation:</th>
|
||||
</tr>
|
||||
<?php
|
||||
foreach ($array as $value) {
|
||||
<?php
|
||||
foreach ($array as $value) {
|
||||
$url = url("characterprofile.php?name=". $value['name']);
|
||||
echo '<tr class="special" onclick="javascript:window.location.href=\'' . $url . '\'">';
|
||||
echo '<td><a href="characterprofile.php?name='. $value['name'] .'">'. $value['name'] .'</a></td>';
|
||||
if (!empty($value['gname'])) echo '<td><a href="guilds.php?name='. $value['gname'] .'">'. $value['gname'] .'</a></td>'; else echo '<td></td>';
|
||||
echo '<td>'. $value['level'] .'</td>';
|
||||
echo '<td>'. vocation_id_to_name($value['vocation']) .'</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
$flag = ($loadFlags === true && strlen($value['flag']) > 1) ? '<img src="' . $config['country_flags']['server'] . '/' . $value['flag'] . '.png"> ' : '';
|
||||
$guildname = (!empty($value['gname'])) ? '<a href="guilds.php?name='. $value['gname'] .'">'. $value['gname'] .'</a>' : '';
|
||||
?>
|
||||
<tr class="special" onclick="javascript:window.location.href='<?php echo $url; ?>'">
|
||||
<td><?php echo $flag; ?><a href="characterprofile.php?name=<?php echo $value['name']; ?>"><?php echo $value['name']; ?></a></td>
|
||||
<td><?php echo $guildname; ?></td>
|
||||
<td><?php echo $value['level']; ?></td>
|
||||
<td><?php echo vocation_id_to_name($value['vocation']); ?></td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
|
||||
<?php
|
||||
|
Reference in New Issue
Block a user