From 97aeb251b897cffabbfffe3952b83ce7023a4165 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 19 Sep 2010 17:02:14 +0200 Subject: Core/Players: Added support for single character bans Core/Commands: Renamed .ban character to .ban playeraccount (.ban character will ban only the player, not account) This revision reaches 10000, congratulations and thanks to everyone who contributed! --HG-- branch : trunk --- src/server/shared/Database/Implementation/CharacterDatabase.cpp | 8 ++++++++ src/server/shared/Database/Implementation/CharacterDatabase.h | 8 ++++++++ 2 files changed, 16 insertions(+) (limited to 'src/server/shared') diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 66ec9f5bb94..9a8157ad9f1 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -39,6 +39,14 @@ bool CharacterDatabaseConnection::Open(const std::string& infoString) PrepareStatement(CHAR_DEL_TINY_GROUPS, "DELETE FROM groups WHERE guid NOT IN (SELECT guid FROM group_member GROUP BY guid HAVING COUNT(guid) > 1)"); PrepareStatement(CHAR_DEL_NONEXISTENT_GROUP_MEMBERS, "DELETE FROM group_member WHERE guid NOT IN (SELECT guid FROM groups)"); PrepareStatement(CHAR_DEL_NONEXISTENT_GROUP_INSTANCES, "DELETE FROM group_instance WHERE guid NOT IN (SELECT guid FROM groups)"); + PrepareStatement(CHAR_DEL_EXPIRED_BANS, "UPDATE character_banned SET active = 0 WHERE unbandate <= UNIX_TIMESTAMP() AND unbandate <> bandate"); + PrepareStatement(CHAR_GET_GUID_BY_NAME, "SELECT guid FROM characters WHERE name = ?"); + PrepareStatement(CHAR_ADD_BAN, "INSERT INTO character_banned VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, ?, ?, 1)"); + PrepareStatement(CHAR_SET_NOT_BANNED, "UPDATE character_banned SET active = 0 WHERE guid = ?"); + PrepareStatement(CHAR_GET_BANINFO, "SELECT FROM_UNIXTIME(bandate), unbandate-bandate, active, unbandate, banreason, bannedby FROM character_banned WHERE guid = ? ORDER BY bandate ASC"); + PrepareStatement(CHAR_GET_GUID_BY_NAME_FILTER, "SELECT guid, name FROM characters WHERE name LIKE CONCAT('%%', ?, '%%')"); + PrepareStatement(CHAR_GET_BANINFO_LIST, "SELECT bandate, unbandate, bannedby, banreason FROM character_banned WHERE guid = ? ORDER BY unbandate"); + PrepareStatement(CHAR_GET_BANNED_NAME, "SELECT characters.name FROM characters, character_banned WHERE character_banned.guid = ? AND character_banned.guid = characters.guid"); return true; } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 0807e3ebc11..1e855f135b4 100644 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -53,6 +53,14 @@ enum CharacterDatabaseStatements CHAR_DEL_TINY_GROUPS, CHAR_DEL_NONEXISTENT_GROUP_MEMBERS, CHAR_DEL_NONEXISTENT_GROUP_INSTANCES, + CHAR_DEL_EXPIRED_BANS, + CHAR_GET_GUID_BY_NAME, + CHAR_ADD_BAN, + CHAR_SET_NOT_BANNED, + CHAR_GET_BANINFO, + CHAR_GET_GUID_BY_NAME_FILTER, + CHAR_GET_BANINFO_LIST, + CHAR_GET_BANNED_NAME, MAX_CHARACTERDATABASE_STATEMENTS, }; -- cgit v1.2.3