diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-03-21 21:01:53 +0100 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2012-04-19 19:10:50 +0200 |
commit | 67a608b1d13780d19271fedec004bf49b2b2b908 (patch) | |
tree | a5b90dc8f650ebe99185650629bddf3f6c424a19 /src/account-server | |
parent | a8d65824ea87d5c52ad662530b699650195e83ce (diff) | |
download | manaserv-67a608b1d13780d19271fedec004bf49b2b2b908.tar.gz manaserv-67a608b1d13780d19271fedec004bf49b2b2b908.tar.bz2 manaserv-67a608b1d13780d19271fedec004bf49b2b2b908.tar.xz manaserv-67a608b1d13780d19271fedec004bf49b2b2b908.zip |
Fixed guild support
List of things fixed:
- fixed having multiple guild support everywhere
- implemented kick code (untested due to missing kick possiblity in client)
- fixed giving owner rights to next member when owner leaves guild
- fixed potentional segmention fault when trying to access deleted guild after all members left
- fixed saving right changes to database
- made searching for guilds faster a bit (at least when having many guilds)
TODO:
+ Fix conflict between guild and normal channels
+ Fix being able to leave guild channel without leaving guild itself
+ Add kick possiblity to client
Reviewed-by: bjorn.
Diffstat (limited to 'src/account-server')
-rw-r--r-- | src/account-server/storage.cpp | 30 | ||||
-rw-r--r-- | src/account-server/storage.h | 9 |
2 files changed, 36 insertions, 3 deletions
diff --git a/src/account-server/storage.cpp b/src/account-server/storage.cpp index 8876cd4b..c39bfc5d 100644 --- a/src/account-server/storage.cpp +++ b/src/account-server/storage.cpp @@ -591,6 +591,30 @@ Character *Storage::getCharacter(const std::string &name) return 0; } +unsigned int Storage::getCharacterId(const std::string &name) +{ + std::ostringstream sql; + sql << "SELECT id FROM " << CHARACTERS_TBL_NAME << " WHERE name = ?"; + if (!mDb->prepareSql(sql.str())) + return 0; + try + { + mDb->bindValue(1, name); + const dal::RecordSet &charInfo = mDb->processSql(); + if (charInfo.isEmpty()) + return 0; + + string_to< unsigned > toUint; + return toUint(charInfo(0, 0)); + } + catch (const dal::DbSqlQueryExecFailure &e) + { + utils::throwError("DALStorage::getCharacterId #1) SQL query failure: ", + e); + } + return 0; +} + bool Storage::doesUserNameExist(const std::string &name) { try @@ -1478,9 +1502,9 @@ void Storage::setMemberRights(int guildId, int memberId, int rights) { std::ostringstream sql; sql << "UPDATE " << GUILD_MEMBERS_TBL_NAME - << " SET rights = '" << rights << "'" - << " WHERE member_id = '" << memberId << "'" - << " AND guild_id = '" << guildId << "'';"; + << " SET rights = " << rights + << " WHERE member_id = " << memberId + << " AND guild_id = " << guildId << ";"; mDb->execSql(sql.str()); } catch (const dal::DbSqlQueryExecFailure& e) diff --git a/src/account-server/storage.h b/src/account-server/storage.h index d6fb3ed8..b71be22f 100644 --- a/src/account-server/storage.h +++ b/src/account-server/storage.h @@ -95,6 +95,15 @@ class Storage Character *getCharacter(const std::string &name); /** + * Gets the id of a character by its name. + * + * @param name the name of the character. + * + * @return the id of the character + */ + unsigned int getCharacterId(const std::string &name); + + /** * Add an account to the database. * * @param account the new account. |