diff options
author | David Athay <ko2fan@gmail.com> | 2009-03-05 15:37:06 +0000 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2009-03-05 15:37:06 +0000 |
commit | 7ae5cf4b6d17a85a010c1eb3262d340e94f44e77 (patch) | |
tree | 8e4e27fa94359e34d5879a05a213d5f239908809 /src | |
parent | be548ff54b8fa60a8a778714cd8fa5326722c0aa (diff) | |
download | manaserv-7ae5cf4b6d17a85a010c1eb3262d340e94f44e77.tar.gz manaserv-7ae5cf4b6d17a85a010c1eb3262d340e94f44e77.tar.bz2 manaserv-7ae5cf4b6d17a85a010c1eb3262d340e94f44e77.tar.xz manaserv-7ae5cf4b6d17a85a010c1eb3262d340e94f44e77.zip |
Added transactions for chat events.
Diffstat (limited to 'src')
-rw-r--r-- | src/account-server/dalstorage.cpp | 14 | ||||
-rw-r--r-- | src/account-server/transaction.hpp | 14 | ||||
-rw-r--r-- | src/chat-server/chathandler.cpp | 80 | ||||
-rw-r--r-- | src/chat-server/guildmanager.cpp | 3 | ||||
-rw-r--r-- | src/sql/sqlite/updates/update_2_to_3.sql | 2 |
5 files changed, 100 insertions, 13 deletions
diff --git a/src/account-server/dalstorage.cpp b/src/account-server/dalstorage.cpp index a524fc35..eac9f409 100644 --- a/src/account-server/dalstorage.cpp +++ b/src/account-server/dalstorage.cpp @@ -1635,7 +1635,7 @@ void DALStorage::addTransaction(const Transaction &trans) { std::stringstream sql; sql << "INSERT INTO " << TRANSACTION_TBL_NAME - << " VALUES (" << trans.mCharacterId << ", " << trans.mAction + << " VALUES (NULL, " << trans.mCharacterId << ", " << trans.mAction << ", '" << trans.mMessage << "', " << time(NULL) << ")"; mDb->execSql(sql.str()); } @@ -1662,9 +1662,9 @@ std::vector<Transaction> DALStorage::getTransactions(unsigned int num) for (int i = start; i < size; ++i) { Transaction trans; - trans.mCharacterId = toUint(rec(i, 0)); - trans.mAction = toUint(rec(i, 1)); - trans.mMessage = rec(i, 2); + trans.mCharacterId = toUint(rec(i, 1)); + trans.mAction = toUint(rec(i, 2)); + trans.mMessage = rec(i, 3); transactions.push_back(trans); } } @@ -1691,9 +1691,9 @@ std::vector<Transaction> DALStorage::getTransactions(time_t date) for (int i = 0; i < rec.rows(); ++i) { Transaction trans; - trans.mCharacterId = toUint(rec(i, 0)); - trans.mAction = toUint(rec(i, 1)); - trans.mMessage = rec(i, 2); + trans.mCharacterId = toUint(rec(i, 1)); + trans.mAction = toUint(rec(i, 2)); + trans.mMessage = rec(i, 3); transactions.push_back(trans); } } diff --git a/src/account-server/transaction.hpp b/src/account-server/transaction.hpp index 8aa1b340..fa007dfb 100644 --- a/src/account-server/transaction.hpp +++ b/src/account-server/transaction.hpp @@ -31,8 +31,18 @@ struct Transaction enum { TRANS_CHAR_CREATE = 1, - TRANS_CHAR_SELECTED = 2, - TRANS_CHAR_DELETED = 3, + TRANS_CHAR_SELECTED, + TRANS_CHAR_DELETED, + TRANS_MSG_PUBLIC, + TRANS_MSG_ANNOUNCE, + TRANS_MSG_PRIVATE, + TRANS_CHANNEL_JOIN, + TRANS_CHANNEL_KICK, + TRANS_CHANNEL_MODE, + TRANS_CHANNEL_QUIT, + TRANS_CHANNEL_LIST, + TRANS_CHANNEL_USERLIST, + TRANS_CHANNEL_TOPIC, }; #endif diff --git a/src/chat-server/chathandler.cpp b/src/chat-server/chathandler.cpp index 9240d957..555c1a06 100644 --- a/src/chat-server/chathandler.cpp +++ b/src/chat-server/chathandler.cpp @@ -27,6 +27,7 @@ #include "defines.h" #include "account-server/character.hpp" #include "account-server/dalstorage.hpp" +#include "account-server/transaction.hpp" #include "chat-server/guildmanager.hpp" #include "chat-server/chatchannelmanager.hpp" #include "chat-server/chatclient.hpp" @@ -291,6 +292,13 @@ ChatHandler::handleChatMessage(ChatClient &client, MessageIn &msg) result.writeString(text); sendInChannel(channel, result); } + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_MSG_PUBLIC; + trans.mMessage = "User said " + text; + storage->addTransaction(trans); } void @@ -314,6 +322,13 @@ ChatHandler::handleAnnounceMessage(ChatClient &client, MessageIn &msg) // We send the message to all players in the default channel as it is // an announcement. sendToEveryone(result); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_MSG_ANNOUNCE; + trans.mMessage = "User announced " + text; + storage->addTransaction(trans); } else { @@ -323,6 +338,7 @@ ChatHandler::handleAnnounceMessage(ChatClient &client, MessageIn &msg) LOG_INFO(client.characterName << " couldn't make an announcement due to insufficient rights."); } + } void @@ -339,6 +355,14 @@ ChatHandler::handlePrivMsgMessage(ChatClient &client, MessageIn &msg) // We seek the player to whom the message is told and send it to her/him. sayToPlayer(client, user, text); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_MSG_PRIVATE; + trans.mMessage = "User said " + text; + trans.mMessage.append(" to " + user); + storage->addTransaction(trans); } void ChatHandler::handleEnterChannelMessage(ChatClient &client, MessageIn &msg) @@ -392,6 +416,13 @@ void ChatHandler::handleEnterChannelMessage(ChatClient &client, MessageIn &msg) warnUsersAboutPlayerEventInChat(channel, client.characterName, CHAT_EVENT_NEW_PLAYER); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_JOIN; + trans.mMessage = "User joined " + channelName; + storage->addTransaction(trans); } else { @@ -414,7 +445,7 @@ ChatHandler::handleModeChangeMessage(ChatClient &client, MessageIn &msg) return; } - if (channel->getUserMode(&client).find('o') != std::string::npos) + if (channel->getUserMode(&client).find('o') == std::string::npos) { // invalid permissions return; @@ -434,6 +465,14 @@ ChatHandler::handleModeChangeMessage(ChatClient &client, MessageIn &msg) warnUsersAboutPlayerEventInChat(channel, info.str(), CHAT_EVENT_MODE_CHANGE); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_MODE; + trans.mMessage = "User mode " + mode; + trans.mMessage.append(" set on " + user); + storage->addTransaction(trans); } void @@ -448,7 +487,7 @@ ChatHandler::handleKickUserMessage(ChatClient &client, MessageIn &msg) return; } - if (channel->getUserMode(&client).find('o') != std::string::npos) + if (channel->getUserMode(&client).find('o') == std::string::npos) { // invalid permissions return; @@ -465,6 +504,13 @@ ChatHandler::handleKickUserMessage(ChatClient &client, MessageIn &msg) ss.str(), CHAT_EVENT_KICKED_PLAYER); } + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_KICK; + trans.mMessage = "User kicked " + user; + storage->addTransaction(trans); } void @@ -493,6 +539,14 @@ ChatHandler::handleQuitChannelMessage(ChatClient &client, MessageIn &msg) warnUsersAboutPlayerEventInChat(channel, client.characterName, CHAT_EVENT_LEAVING_PLAYER); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_QUIT; + trans.mMessage = "User left " + channel->getName(); + storage->addTransaction(trans); + if(channel->getUserList().empty()) { chatChannelManager->removeChannel(channel->getId()); @@ -519,6 +573,13 @@ ChatHandler::handleListChannelsMessage(ChatClient &client, MessageIn &msg) } client.send(reply); + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_LIST; + trans.mMessage = ""; + storage->addTransaction(trans); } void @@ -544,6 +605,13 @@ ChatHandler::handleListChannelUsersMessage(ChatClient &client, MessageIn &msg) client.send(reply); } + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_USERLIST; + trans.mMessage = ""; + storage->addTransaction(trans); } void @@ -561,6 +629,14 @@ ChatHandler::handleTopicChange(ChatClient &client, MessageIn &msg) { guildChannelTopicChange(channel, client.characterId, topic); } + + // log transaction + Transaction trans; + trans.mCharacterId = client.characterId; + trans.mAction = TRANS_CHANNEL_TOPIC; + trans.mMessage = "User changed topic to " + topic; + trans.mMessage.append(" in " + channel->getName()); + storage->addTransaction(trans); } void diff --git a/src/chat-server/guildmanager.cpp b/src/chat-server/guildmanager.cpp index cf4ceef6..b275ee8c 100644 --- a/src/chat-server/guildmanager.cpp +++ b/src/chat-server/guildmanager.cpp @@ -195,12 +195,13 @@ bool GuildManager::alreadyOwner(int playerId) std::list<int>::iterator itr = mOwners.begin(); std::list<int>::iterator itr_end = mOwners.end(); - for (itr; itr != itr_end; ++itr) + while (itr != itr_end) { if ((*itr) == playerId) { return true; } + ++itr; } return false; diff --git a/src/sql/sqlite/updates/update_2_to_3.sql b/src/sql/sqlite/updates/update_2_to_3.sql index b2e4834d..f8fdfc91 100644 --- a/src/sql/sqlite/updates/update_2_to_3.sql +++ b/src/sql/sqlite/updates/update_2_to_3.sql @@ -1,5 +1,5 @@ --- add table tmw_online_list to store online users +-- add table tmw_transactions to store transactional history CREATE TABLE tmw_transactions ( id INTEGER PRIMARY KEY, |