[8442] Fixed displaying return button in mails Author: arrai
--HG-- branch : trunk
This commit is contained in:
+10
-9
@@ -37,8 +37,8 @@ enum MailShowFlags
|
||||
MAIL_SHOW_UNK0 = 0x0001,
|
||||
MAIL_SHOW_DELETE = 0x0002, // forced show delete button instead return button
|
||||
MAIL_SHOW_AUCTION = 0x0004, // from old comment
|
||||
MAIL_SHOW_COD = 0x0008, // show subject prefix
|
||||
MAIL_SHOW_UNK4 = 0x0010,
|
||||
MAIL_SHOW_UNK2 = 0x0008, // unknown, COD will be shown even without that flag
|
||||
MAIL_SHOW_RETURN = 0x0010,
|
||||
};
|
||||
|
||||
void MailItem::deleteItem( bool inDB )
|
||||
@@ -321,14 +321,15 @@ void WorldSession::HandleMailDelete(WorldPacket & recv_data )
|
||||
Mail *m = _player->GetMail(mailId);
|
||||
if(m)
|
||||
{
|
||||
if (m->COD > 0)
|
||||
// delete shouldn't show up for COD mails
|
||||
if (m->COD)
|
||||
{
|
||||
pl->SendMailResult(mailId, MAIL_DELETED, MAIL_ERR_INTERNAL_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
m->state = MAIL_STATE_DELETED;
|
||||
}
|
||||
|
||||
Player* pl = _player;
|
||||
pl->m_mailsUpdated = true;
|
||||
|
||||
pl->SendMailResult(mailId, MAIL_DELETED, MAIL_OK);
|
||||
}
|
||||
|
||||
@@ -605,8 +606,8 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data )
|
||||
show_flags |= MAIL_SHOW_DELETE;
|
||||
if ((*itr)->messageType == MAIL_AUCTION)
|
||||
show_flags |= MAIL_SHOW_AUCTION;
|
||||
if ((*itr)->COD)
|
||||
show_flags |= MAIL_SHOW_COD;
|
||||
if ((*itr)->HasItems() && (*itr)->messageType == MAIL_NORMAL)
|
||||
show_flags |= MAIL_SHOW_RETURN;
|
||||
|
||||
data << (uint16) 0x0040; // unknown 2.3.0, different values
|
||||
data << (uint32) (*itr)->messageID; // Message ID
|
||||
|
||||
@@ -192,3 +192,42 @@ bool Database::DirectPExecute(const char * format,...)
|
||||
return DirectExecute(szQuery);
|
||||
}
|
||||
|
||||
bool Database::CheckRequiredField( char const* table_name, char const* required_name )
|
||||
{
|
||||
// check required field
|
||||
QueryResult* result = PQuery("SELECT %s FROM %s LIMIT 1",required_name,table_name);
|
||||
if(result)
|
||||
{
|
||||
delete result;
|
||||
return true;
|
||||
}
|
||||
|
||||
// check fail, prepare readabale error message
|
||||
|
||||
// search current required_* field in DB
|
||||
QueryNamedResult* result2 = PQueryNamed("SELECT * FROM %s LIMIT 1",table_name);
|
||||
if(result2)
|
||||
{
|
||||
QueryFieldNames const& namesMap = result2->GetFieldNames();
|
||||
std::string reqName;
|
||||
for(QueryFieldNames::const_iterator itr = namesMap.begin(); itr != namesMap.end(); ++itr)
|
||||
{
|
||||
if(itr->substr(0,9)=="required_")
|
||||
{
|
||||
reqName = *itr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete result;
|
||||
|
||||
if(!reqName.empty())
|
||||
{
|
||||
sLog.outErrorDb("Table `%s` have field `%s` but expected `%s`! Not all sql updates applied?",table_name,reqName.c_str(),required_name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
sLog.outErrorDb("Table `%s` not have required_* field but expected `%s`! Not all sql updates applied?",table_name,required_name);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -131,6 +131,7 @@ class TRINITY_DLL_SPEC Database
|
||||
// sets the result queue of the current thread, be careful what thread you call this from
|
||||
void SetResultQueue(SqlResultQueue * queue);
|
||||
|
||||
bool CheckRequiredField(char const* table_name, char const* required_name);
|
||||
private:
|
||||
bool m_logSQL;
|
||||
std::string m_logsDir;
|
||||
|
||||
Reference in New Issue
Block a user