mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-29 18:59:21 +02:00
Greatly reducing the amounts of SQL queries used on guilds page.
This commit is contained in:
parent
43ae67f74e
commit
098efa6591
@ -401,7 +401,7 @@ function guild_invite_player($cid, $gid) {
|
||||
// Gets a list of invited players to a particular guild.
|
||||
function guild_invite_list($gid) {
|
||||
$gid = (int)$gid;
|
||||
return mysql_select_multi("SELECT `player_id`, `guild_id` FROM `guild_invites` WHERE `guild_id`='$gid';");
|
||||
return mysql_select_multi("SELECT `gi`.`player_id`, `gi`.`guild_id`, `p`.`name` FROM `guild_invites` AS `gi` INNER JOIN `players` AS `p` ON `gi`.`player_id`=`p`.`id` WHERE `gi`.`guild_id`='$gid';");
|
||||
}
|
||||
|
||||
// Update player's guild position
|
||||
@ -495,6 +495,7 @@ function get_player_guild_data($cid) {
|
||||
$cid = (int)$cid;
|
||||
if (config('TFSVersion') !== 'TFS_10') $playerdata = mysql_select_single("SELECT `rank_id` FROM `players` WHERE `id`='$cid' LIMIT 1;");
|
||||
else $playerdata = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='$cid' LIMIT 1;");
|
||||
|
||||
if ($playerdata !== false) {
|
||||
$rankdata = mysql_select_single("SELECT `guild_id`, `level` AS `rank_level`, `name` AS `rank_name` FROM `guild_ranks` WHERE `id`='". $playerdata['rank_id'] ."' LIMIT 1;");
|
||||
if ($rankdata !== false) {
|
||||
@ -533,8 +534,8 @@ function get_guilds_list() {
|
||||
// Get array of player data related to a guild.
|
||||
function get_guild_players($gid) {
|
||||
$gid = (int)$gid; // Sanitizing the parameter id
|
||||
if (config('TFSVersion') !== 'TFS_10') return mysql_select_multi("SELECT p.rank_id, p.name, p.level, p.guildnick, p.vocation, p.online, gr.name AS `rank_name` FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id ='$gid' ORDER BY gr.id, p.name;");
|
||||
else return mysql_select_multi("SELECT p.id, p.name, p.level, p.vocation, gm.rank_id, gm.nick AS `guildnick`, gr.name AS `rank_name` FROM players AS p LEFT JOIN guild_membership AS gm ON gm.player_id = p.id LEFT JOIN guild_ranks AS gr ON gr.id = gm.rank_id WHERE gm.guild_id = '$gid' ORDER BY gm.rank_id, p.name");
|
||||
if (config('TFSVersion') !== 'TFS_10') return mysql_select_multi("SELECT `p`.`rank_id`, `p`.`name`, `p`.`level`, `p`.`guildnick`, `p`.`vocation`, `p`.`online`, `gr`.`name` AS `rank_name`, `gr`.`level` AS `rank_level` FROM `players` AS `p` LEFT JOIN `guild_ranks` AS `gr` ON `gr`.`id` = `p`.`rank_id` WHERE `gr`.`guild_id` ='$gid' ORDER BY `gr`.`id`, `p`.`name`;");
|
||||
else return mysql_select_multi("SELECT `p`.`id`, `p`.`name`, `p`.`level`, `p`.`vocation`, `gm`.`rank_id`, `gm`.`nick` AS `guildnick`, `gr`.`name` AS `rank_name`, `gr`.`level` AS `rank_level` FROM `players` AS `p` LEFT JOIN `guild_membership` AS `gm` ON `gm`.`player_id` = `p`.`id` LEFT JOIN `guild_ranks` AS `gr` ON `gr`.`id` = `gm`.`rank_id` WHERE `gm`.`guild_id` = '$gid' ORDER BY `gm`.`rank_id`, `p`.`name`");
|
||||
}
|
||||
|
||||
// Get guild level data (avg level, total level, count of players)
|
||||
@ -834,26 +835,20 @@ function user_pending_deletes($acc_id) {
|
||||
}
|
||||
|
||||
// Parameter: accounts.id returns: An array containing detailed information of every character on the account.
|
||||
// Array: [0] = name, [1] = level, [2] = vocation, [3] = town_id, [4] = lastlogin, [5] = online
|
||||
function user_character_list($account_id) {
|
||||
//$count = user_character_list_count($account_id);
|
||||
$account_id = (int)$account_id;
|
||||
|
||||
if (config('TFSVersion') == 'TFS_10') {
|
||||
$characters = mysql_select_multi("SELECT `id`, `name`, `level`, `vocation`, `town_id`, `lastlogin` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC");
|
||||
$characters = mysql_select_multi("SELECT `p`.`id`, `p`.`name`, `p`.`level`, `p`.`vocation`, `p`.`town_id`, `p`.`lastlogin`, `gm`.`rank_id`, `po`.`player_id` AS `online` FROM `players` AS `p` LEFT JOIN `guild_membership` AS `gm` ON `p`.`id`=`gm`.`player_id` LEFT JOIN `players_online` AS `po` ON `p`.`id`=`po`.`player_id` WHERE `p`.`account_id`='$account_id' ORDER BY `p`.`level` DESC");
|
||||
if ($characters !== false) {
|
||||
$onlineArray = mysql_select_multi("SELECT `player_id` FROM `players_online`;");
|
||||
$onlineIds = array();
|
||||
if ($onlineArray !== false) foreach ($onlineArray as $row) $onlineIds[] = $row['player_id'];
|
||||
for ($i = 0; $i < count($characters); $i++) {
|
||||
$online = in_array($characters[$i]['id'], $onlineIds);
|
||||
if ($online) $characters[$i]['online'] = 1;
|
||||
else $characters[$i]['online'] = 0;
|
||||
unset($characters[$i]['id']);
|
||||
$characters[$i]['online'] = ($characters[$i]['online'] > 0) ? 1 : 0;
|
||||
//unset($characters[$i]['id']);
|
||||
}
|
||||
}
|
||||
|
||||
} else $characters = mysql_select_multi("SELECT `name`, `level`, `vocation`, `town_id`, `lastlogin`, `online` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC");
|
||||
} else $characters = mysql_select_multi("SELECT `id`, `name`, `level`, `vocation`, `town_id`, `lastlogin`, `online`, `rank_id` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC");
|
||||
|
||||
if ($characters !== false) {
|
||||
$count = count($characters);
|
||||
|
46
guilds.php
46
guilds.php
@ -28,11 +28,14 @@ if (user_logged_in() === true) {
|
||||
// fetch data
|
||||
$char_count = user_character_list_count($session_user_id);
|
||||
$char_array = user_character_list($user_data['id']);
|
||||
|
||||
$characters = array();
|
||||
$charactersId = array();
|
||||
$charactersRank = array();
|
||||
if ($char_array !== false) {
|
||||
foreach ($char_array as $value) {
|
||||
$characters[] = $value['name'];
|
||||
$charactersId[] = $value['id'];
|
||||
$charactersRank[] = $value['rank_id'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -186,19 +189,20 @@ if (user_logged_in() === true) {
|
||||
$highest_access = 0;
|
||||
if (user_logged_in() === true) {
|
||||
// Get visitor access in this guild
|
||||
|
||||
foreach ($players as $player) {
|
||||
$rid = $player['rank_id'];
|
||||
|
||||
for ($i = 0; $i < $char_count; $i++) {
|
||||
if ($config['TFSVersion'] !== 'TFS_10') $data = user_character_data(user_character_id($characters[$i]), 'rank_id');
|
||||
else $data = mysql_select_single("SELECT `rank_id` FROM `guild_membership` WHERE `player_id`='". user_character_id($characters[$i]) ."' LIMIT 1;");
|
||||
if ($data['rank_id'] == $rid) {
|
||||
$access = get_guild_position($data['rank_id']);
|
||||
|
||||
$playerRank = $charactersRank[$i];
|
||||
|
||||
if ($playerRank == $rid) {
|
||||
$access = get_guild_position($playerRank);
|
||||
if ($access == 2 || $access == 3) { //If player got access level vice leader or leader
|
||||
if ($access > $highest_access) $highest_access = $access;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -253,7 +257,7 @@ if (user_logged_in() === true) {
|
||||
}
|
||||
echo '</td>';
|
||||
echo '<td>'. $player['level'] .'</td>';
|
||||
echo '<td>'. $config['vocations'][$player['vocation']] .'</td>';
|
||||
echo '<td>'. $config['vocations'][$player['vocation']]['name'] .'</td>';
|
||||
if ($chardata['online'] == 1) echo '<td> <b><font color="green"> Online </font></b></td>';
|
||||
else echo '<td> Offline </td>';
|
||||
echo '</tr>';
|
||||
@ -275,7 +279,7 @@ if (user_logged_in() === true) {
|
||||
$exist = false;
|
||||
// Shuffle through invited character, see if they match your character.
|
||||
if ($inv_data !== false) foreach ($inv_data as $inv) {
|
||||
if (user_character_id($characters[$i]) == $inv['player_id']) {
|
||||
if ($charactersId[$i] == $inv['player_id']) {
|
||||
$exist = true;
|
||||
}
|
||||
}
|
||||
@ -286,9 +290,8 @@ if (user_logged_in() === true) {
|
||||
<?php
|
||||
$bool = false;
|
||||
if ($inv_data !== false) foreach ($inv_data as $inv) {
|
||||
$uninv = user_character_data($inv['player_id'], 'name');
|
||||
echo '<tr>';
|
||||
echo '<td>'. $uninv['name'] .'</td>';
|
||||
echo '<td>'. $inv['name'] .'</td>';
|
||||
// Remove invitation
|
||||
if ($highest_access == 2 || $highest_access == 3) {
|
||||
?> <form action="" method="post"> <?php
|
||||
@ -301,7 +304,7 @@ if (user_logged_in() === true) {
|
||||
// Join Guild
|
||||
?> <form action="" method="post"> <?php
|
||||
for ($i = 0; $i < $char_count; $i++) {
|
||||
if (user_character_id($characters[$i]) == $inv['player_id']) {
|
||||
if ($charactersId[$i] == $inv['player_id']) {
|
||||
echo '<td>';
|
||||
echo '<input type="hidden" name="joinguild" value="' . $inv['player_id'] . '" />';
|
||||
echo '<input type="submit" value="Join Guild">';
|
||||
@ -317,7 +320,7 @@ if (user_logged_in() === true) {
|
||||
// Reject invitation
|
||||
?> <form action="" method="post"> <?php
|
||||
for ($i = 0; $i < $char_count; $i++) {
|
||||
if (user_character_id($characters[$i]) == $inv['player_id']) {
|
||||
if ($charactersId[$i] == $inv['player_id']) {
|
||||
echo '<td>';
|
||||
echo '<input type="hidden" name="uninvite" value="' . $inv['player_id'] . '" />';
|
||||
echo '<input type="submit" value="Reject Invitation">';
|
||||
@ -685,9 +688,9 @@ if ($highest_access >= 2) {
|
||||
<?php
|
||||
//$gid = get_guild_id($_GET['name']);
|
||||
//$players = get_guild_players($gid);
|
||||
|
||||
foreach ($players as $player) {
|
||||
$pl_data = get_player_guild_data(user_character_id($player['name']));
|
||||
if ($pl_data['rank_level'] != 3) {
|
||||
if ($player['rank_level'] != 3) {
|
||||
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
|
||||
} else {
|
||||
if ($highest_access == 3) {
|
||||
@ -714,8 +717,7 @@ if ($highest_access >= 2) {
|
||||
//$gid = get_guild_id($_GET['name']);
|
||||
//$players = get_guild_players($gid);
|
||||
foreach ($players as $player) {
|
||||
$pl_data = get_player_guild_data(user_character_id($player['name']));
|
||||
if ($pl_data['rank_level'] != 3) {
|
||||
if ($player['rank_level'] != 3) {
|
||||
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
|
||||
}
|
||||
}
|
||||
@ -750,9 +752,8 @@ if ($highest_access >= 2) {
|
||||
//$gid = get_guild_id($_GET['name']);
|
||||
//$players = get_guild_players($gid);
|
||||
foreach ($players as $player) {
|
||||
$pl_data = get_player_guild_data(user_character_id($player['name']));
|
||||
if ($pl_data['rank_level'] != 3) {
|
||||
if ($pl_data['rank_level'] != 2) {
|
||||
if ($player['rank_level'] != 3) {
|
||||
if ($player['rank_level'] != 2) {
|
||||
echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
|
||||
} else if ($highest_access == 3) echo '<option value="'. $player['name'] .'">'. $player['name'] .'</option>';
|
||||
}
|
||||
@ -800,9 +801,8 @@ if ($highest_access >= 2) {
|
||||
//$gid = get_guild_id($_GET['name']);
|
||||
//$players = get_guild_players($gid);
|
||||
foreach ($players as $player) {
|
||||
$pl_data = get_player_guild_data(user_character_id($player['name']));
|
||||
if ($pl_data['rank_level'] != 3) {
|
||||
echo '<option value="'. user_character_id($player['name']) .'">'. $player['name'] .'</option>';
|
||||
if ($player['rank_level'] != 3) {
|
||||
echo '<option value="'. $player['id'] .'">'. $player['name'] .'</option>';
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -920,7 +920,7 @@ if ($forumExist !== false) {
|
||||
for ($i = 0; $i < $char_count; $i++) {
|
||||
foreach ($players as $player) {
|
||||
if ($player['name'] == $characters[$i]) {
|
||||
$data = get_player_guild_data(user_character_id($player['name']));
|
||||
$data = get_player_guild_data($player['id']);
|
||||
if ($data['rank_level'] != 3) echo '<option value="'. $characters[$i] .'">'. $characters[$i] .'</option>';
|
||||
else echo '<option disabled>'. $characters[$i] .' [disabled:Leader]</option>';
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user