Greatly reducing the amounts of SQL queries used on guilds page.

This commit is contained in:
Znote 2017-01-04 22:11:59 +01:00
parent 43ae67f74e
commit 098efa6591
2 changed files with 31 additions and 36 deletions

View File

@ -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);

View File

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