From 44839d9cdbae94c4dfafe89a919bb038d0db3f63 Mon Sep 17 00:00:00 2001 From: Znote Date: Sun, 17 Mar 2019 19:07:45 +0100 Subject: [PATCH] Fix #303 SQL error when joining a guild when your already in another guild --- engine/function/users.php | 12 ++++++++++-- guilds.php | 26 +++++++++++++++++--------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/engine/function/users.php b/engine/function/users.php index 530f943..03f8a9f 100644 --- a/engine/function/users.php +++ b/engine/function/users.php @@ -371,7 +371,8 @@ function guild_player_join($cid, $gid) { // Add to guild if rank id was found: if ($rid != false) { // Remove the invite: - guild_remove_invitation($cid, $gid); + //guild_remove_invitation($cid, $gid); + guild_remove_all_invitations($cid); // Add to guild: mysql_update("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid"); $status = true; @@ -383,7 +384,8 @@ function guild_player_join($cid, $gid) { if ($guildrank !== false) { $rid = $guildrank['id']; // Remove invite - guild_remove_invitation($cid, $gid); + //guild_remove_invitation($cid, $gid); + guild_remove_all_invitations($cid); // Add to guild mysql_insert("INSERT INTO `guild_membership` (`player_id`, `guild_id`, `rank_id`, `nick`) VALUES ('$cid', '$gid', '$rid', '');"); // Return success @@ -400,6 +402,12 @@ function guild_remove_invitation($cid, $gid) { mysql_delete("DELETE FROM `guild_invites` WHERE `player_id`='$cid' AND `guild_id`='$gid';"); } +// Remove ALL invitations +function guild_remove_all_invitations($cid) { + $cid = (int)$cid; + mysql_delete("DELETE FROM `guild_invites` WHERE `player_id`='$cid';"); +} + // Invite character to guild function guild_invite_player($cid, $gid) { $cid = (int)$cid; diff --git a/guilds.php b/guilds.php index f89cef1..63cfd2d 100644 --- a/guilds.php +++ b/guilds.php @@ -171,7 +171,7 @@ if (user_logged_in() === true) { Failed to find guild position representing member.'; + // Ensure player is not already a member of another guild + if (get_character_guild_rank($joining_player_id) === false) { + if (guild_player_join($joining_player_id, (int)$gid)) { + header('Location: guilds.php?name='. $_GET['name']); + exit(); + } else echo 'Failed to find guild position representing member.'; + } else { + $already_guild = get_player_guild_data($joining_player_id); + $already_guild_name = get_guild_name($already_guild['guild_id']); + echo "You are already {$already_guild['rank_name']} of another guild: {$already_guild_name}.
You need to leave that guild first before you can join another one.
"; + } } else echo 'Character must be offline before joining guild.'; } }