Changeset 94 for trunk/src/game

Show
Ignore:
Timestamp:
11/19/08 13:34:57 (17 years ago)
Author:
yumileroy
Message:

[svn] * Use ObjectMgr/AccountMgr? functions rather than DB queries. Source mangos

Original author: KingPin?
Date: 2008-10-21 19:07:16-05:00

Location:
trunk/src/game
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/Level3.cpp

    r85 r94  
    48254825            } 
    48264826 
    4827             loginDatabase.escape_string(nameOrIP); 
    4828             QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'", nameOrIP.c_str()); 
    4829             if (!result) 
     4827            accountid = objmgr.GetPlayerAccountIdByPlayerName (nameOrIP); 
     4828            if (!accountid) 
    48304829            { 
    48314830                PSendSysMessage(LANG_BANINFO_NOCHARACTER); 
    48324831                return true; 
    48334832            } 
    4834             fields = result->Fetch(); 
    4835             accountid = fields[0].GetUInt32(); 
    4836             delete result; 
    4837             result = loginDatabase.PQuery("SELECT username FROM account WHERE id = '%u'", accountid); 
    4838             if (!result) 
     4833             
     4834            if (!accmgr.GetName (accountid,accountname)) 
    48394835            { 
    48404836                PSendSysMessage(LANG_BANINFO_NOCHARACTER); 
    48414837                return true; 
    48424838            } 
    4843             fields = result->Fetch(); 
    4844             accountname = fields[0].GetCppString(); 
    4845             delete result; 
    48464839        } 
    48474840        else 
  • trunk/src/game/ObjectMgr.cpp

    r88 r94  
    13561356{ 
    13571357    QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE guid = '%u'", GUID_LOPART(guid)); 
     1358    if(result) 
     1359    { 
     1360        uint32 acc = (*result)[0].GetUInt32(); 
     1361        delete result; 
     1362        return acc; 
     1363    } 
     1364 
     1365    return 0; 
     1366} 
     1367 
     1368uint32 ObjectMgr::GetPlayerAccountIdByPlayerName(std::string name) const 
     1369{ 
     1370    QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'", name.c_str()); 
    13581371    if(result) 
    13591372    { 
  • trunk/src/game/ObjectMgr.h

    r88 r94  
    414414        uint32 GetPlayerTeamByGUID(const uint64 &guid) const; 
    415415        uint32 GetPlayerAccountIdByGUID(const uint64 &guid) const; 
     416        uint32 GetPlayerAccountIdByPlayerName(std::string name) const; 
    416417 
    417418        uint32 GetNearestTaxiNode( float x, float y, float z, uint32 mapid ); 
  • trunk/src/game/World.cpp

    r88 r94  
    3737#include "SkillDiscovery.h" 
    3838#include "World.h" 
     39#include "AccountMgr.h" 
    3940#include "ObjectMgr.h" 
    4041#include "SpellMgr.h" 
     
    23382339        if(type == "account") 
    23392340        { 
    2340             //NO SQL injection as name is escaped 
    2341             loginDatabase.escape_string(nameOrIP); 
    2342             QueryResult *resultAccounts = loginDatabase.PQuery("SELECT id FROM account WHERE username = '%s'",nameOrIP.c_str()); 
    2343             if(!resultAccounts) 
     2341            if (!AccountMgr::normilizeString (nameOrIP)) 
    23442342                return false; 
    2345             Field* fieldsAccount = resultAccounts->Fetch(); 
    2346             account = fieldsAccount->GetUInt32(); 
    2347  
    2348             delete resultAccounts; 
     2343             
     2344            account = accmgr.GetId (nameOrIP); 
    23492345        } 
    23502346        else if(type == "character") 
     
    23532349                return false; 
    23542350 
    2355             //NO SQL injection as name is escaped 
    2356             loginDatabase.escape_string(nameOrIP); 
    2357             QueryResult *resultAccounts = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'",nameOrIP.c_str()); 
    2358             if(!resultAccounts) 
    2359                 return false; 
    2360             Field* fieldsAccount = resultAccounts->Fetch(); 
    2361             account = fieldsAccount->GetUInt32(); 
    2362  
    2363             delete resultAccounts; 
     2351            account = objmgr.GetPlayerAccountIdByPlayerName (nameOrIP); 
    23642352        } 
    23652353        if(!account) 
    23662354            return false; 
     2355             
    23672356        //NO SQL injection as account is uint32 
    23682357        loginDatabase.PExecute("UPDATE account_banned SET active = '0' WHERE id = '%u'",account);