fixes for the ticket system

--HG--
branch : trunk
This commit is contained in:
Paradox
2009-01-17 10:47:26 -05:00
parent 09ddc711f4
commit d64b239db6
6 changed files with 154 additions and 71 deletions

View File

@@ -512,6 +512,7 @@ ChatCommand * ChatHandler::getCommandTable()
{ "viewname", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketGetByNameCommand, "", NULL },
{ "viewid", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketGetByIdCommand, "", NULL },
{ "close", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketCloseByIdCommand, "", NULL },
{ "closedlist", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketListClosedCommand, "", NULL },
{ "delete", SEC_ADMINISTRATOR, false, &ChatHandler::HandleGMTicketDeleteByIdCommand, "", NULL },
{ "assign", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketAssignToCommand, "", NULL },
{ "unassign", SEC_MODERATOR, false, &ChatHandler::HandleGMTicketUnAssignCommand, "", NULL },
@@ -523,7 +524,7 @@ ChatCommand * ChatHandler::getCommandTable()
{
{ "account", SEC_PLAYER, true, NULL, "", accountCommandTable },
{ "gm", SEC_MODERATOR, true, NULL, "", gmCommandTable },
{ "ticket", SEC_MODERATOR, true, NULL, "", ticketCommandTable },
{ "ticket", SEC_MODERATOR, false, NULL, "", ticketCommandTable },
{ "npc", SEC_MODERATOR, false, NULL, "", npcCommandTable },
{ "go", SEC_MODERATOR, false, NULL, "", goCommandTable },
{ "learn", SEC_MODERATOR, false, NULL, "", learnCommandTable },

View File

@@ -68,6 +68,7 @@ class ChatHandler
void SendSysMessage( int32 entry);
void PSendSysMessage( const char *format, ...) ATTR_PRINTF(2,3);
void PSendSysMessage( int32 entry, ... );
std::string PGetParseString(int32 entry, ...);
int ParseCommands(const char* text);
@@ -412,6 +413,7 @@ class ChatHandler
// GM ticket command handlers
bool HandleGMTicketListCommand(const char* args);
bool HandleGMTicketListOnlineCommand(const char* args);
bool HandleGMTicketListClosedCommand(const char* args);
bool HandleGMTicketGetByIdCommand(const char* args);
bool HandleGMTicketGetByNameCommand(const char* args);
bool HandleGMTicketCloseByIdCommand(const char* args);

View File

@@ -758,23 +758,32 @@ enum TrinityStrings
LANG_YOU_CHANGE_GENDER = 1120,
LANG_YOUR_GENDER_CHANGED = 1121,
// Ticket Strings 2000-2020
// Ticket Strings 2000-2029
LANG_COMMAND_TICKETNEW = 2000,
LANG_COMMAND_TICKETUPDATED = 2001,
LANG_COMMAND_TICKETUPDATED = 2001,
LANG_COMMAND_TICKETPLAYERABANDON = 2002,
LANG_COMMAND_TICKETCLOSED = 2003,
LANG_COMMAND_TICKETDELETED = 2004,
LANG_COMMAND_TICKETNOTEXIST = 2005,
LANG_COMMAND_TICKETCLOSEFIRST = 2007,
LANG_COMMAND_TICKETALREADYASSIGNED = 2008,
LANG_COMMAND_TICKETRELOAD = 2009,
LANG_COMMAND_TICKETSHOWLIST = 2010,
LANG_COMMAND_TICKETSHOWONLINELIST = 2011,
LANG_COMMAND_TICKETCLOSEFIRST = 2006,
LANG_COMMAND_TICKETALREADYASSIGNED = 2007,
LANG_COMMAND_TICKETRELOAD = 2008,
LANG_COMMAND_TICKETSHOWLIST = 2009,
LANG_COMMAND_TICKETSHOWONLINELIST = 2010,
LANG_COMMAND_TICKETSHOWCLOSEDLIST = 2011,
LANG_COMMAND_TICKETASSIGNERROR_A = 2012,
LANG_COMMAND_TICKETASSIGNERROR_B = 2013,
LANG_COMMAND_TICKETNOTASSIGNED = 2014,
LANG_COMMAND_TICKETUNASSIGNSECURITY = 2015,
LANG_COMMAND_TICKETCANNOTCLOSE = 2016,
LANG_COMMAND_TICKETLISTGUID = 2017,
LANG_COMMAND_TICKETLISTNAME = 2018,
LANG_COMMAND_TICKETLISTAGE = 2019,
LANG_COMMAND_TICKETLISTASSIGNEDTO = 2020,
LANG_COMMAND_TICKETLISTUNASSIGNED = 2021,
LANG_COMMAND_TICKETLISTMESSAGE = 2022,
LANG_COMMAND_TICKETLISTCOMMENT = 2023,
LANG_COMMAND_TICKETLISTADDCOMMENT = 2024,
// Trinity strings 5000-9999

View File

@@ -267,6 +267,16 @@ bool ChatHandler::HandleGMChatCommand(const char* args)
return false;
}
std::string ChatHandler::PGetParseString(int32 entry, ...)
{
const char *format = GetTrinityString(entry);
va_list ap;
char str [1024];
va_start(ap, entry);
vsnprintf(str,1024,format, ap );
va_end(ap);
return (std::string)str;
}
bool ChatHandler::HandleGMTicketListCommand(const char* args)
{
SendSysMessage(LANG_COMMAND_TICKETSHOWLIST);
@@ -274,18 +284,16 @@ bool ChatHandler::HandleGMTicketListCommand(const char* args)
{
if((*itr)->closed != 0)
continue;
std::stringstream message;
message << "|cff00ff00Ticket|r: |cff00ccff" << (*itr)->guid;
message << ".|r |cff00ff00created by:|r |cff00ccff" << (*itr)->name;
message << ".|r |cff00ff00Last change:|r |cff00ccff " << secsToTimeString(time(NULL) - (*itr)->timestamp, true, false) << " ago.";
if((*itr)->assignedToGM != 0)
std::string gmname;
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, (*itr)->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, (*itr)->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(time(NULL) - (*itr)->timestamp, true, false)).c_str());
if(objmgr.GetPlayerNameByGUID((*itr)->assignedToGM, gmname))
{
std::string gmname;
objmgr.GetPlayerNameByGUID((*itr)->assignedToGM, gmname);
message << "|r |cff00ff00Assigned to:|r |cff00ccff " << gmname;
}
SendSysMessage(message.str().c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
SendSysMessage(ss.str().c_str());
}
return true;
}
@@ -299,17 +307,38 @@ bool ChatHandler::HandleGMTicketListOnlineCommand(const char* args)
if((*itr)->closed != 0 || !objmgr.GetPlayer((*itr)->playerGuid))
continue;
std::stringstream message;
message << "|cff00ff00Ticket|r: |cff00ccff" << (*itr)->guid;
message << ".|r |cff00ff00created by:|r |cff00ccff" << (*itr)->name;
message << ".|r |cff00ff00Last change:|r |cff00ccff " << secsToTimeString((time(NULL) - (*itr)->timestamp), true, false) << " ago.";
if((*itr)->assignedToGM != 0 && objmgr.GetPlayer((*itr)->assignedToGM))
std::string gmname;
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, (*itr)->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, (*itr)->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(time(NULL) - (*itr)->timestamp, true, false)).c_str());
if(objmgr.GetPlayerNameByGUID((*itr)->assignedToGM, gmname))
{
std::string gmname;
objmgr.GetPlayerNameByGUID((*itr)->assignedToGM, gmname);
message << "|r |cff00ff00Assigned to:|r |cff00ccff " << gmname;
}
SendSysMessage(message.str().c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
SendSysMessage(ss.str().c_str());
}
return true;
}
bool ChatHandler::HandleGMTicketListClosedCommand(const char* args)
{
SendSysMessage(LANG_COMMAND_TICKETSHOWCLOSEDLIST);
for(GmTicketList::iterator itr = ticketmgr.GM_TicketList.begin(); itr != ticketmgr.GM_TicketList.end(); ++itr)
{
if((*itr)->closed == 0)
continue;
std::string gmname;
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, (*itr)->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, (*itr)->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(time(NULL) - (*itr)->timestamp, true, false)).c_str());
if(objmgr.GetPlayerNameByGUID((*itr)->assignedToGM, gmname))
{
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
SendSysMessage(ss.str().c_str());
}
return true;
}
@@ -327,22 +356,21 @@ bool ChatHandler::HandleGMTicketGetByIdCommand(const char* args)
return true;
}
std::stringstream message;
message << "|cff00ff00Ticket|r: |cff00ccff" << ticket->guid;
message << ".|r |cff00ff00created by:|r |cff00ccff" << ticket->name;
message << ".|r |cff00ff00Last change:|r |cff00ccff " << secsToTimeString((time(NULL)-ticket->timestamp), true, false) << " ago.";
if(ticket->assignedToGM != 0 && objmgr.GetPlayer(ticket->assignedToGM))
std::string gmname;
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(time(NULL) - ticket->timestamp, true, false)).c_str());
if(objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname))
{
std::string gmname;
objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname);
message << "|r |cff00ff00Assigned to:|r |cff00ccff " << gmname;
}
message << "|r\n|cff00ff00Message:|r " << ticket->message;
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
ss << PGetParseString(LANG_COMMAND_TICKETLISTMESSAGE, ticket->message.c_str());
if(ticket->comment != "")
{
message << "|r |cff00ff00Comment:|r |cff00ccff " << ticket->comment;
ss << PGetParseString(LANG_COMMAND_TICKETLISTCOMMENT, ticket->comment.c_str());
}
SendSysMessage(message.str().c_str());
SendSysMessage(ss.str().c_str());
return true;
}
@@ -358,22 +386,21 @@ bool ChatHandler::HandleGMTicketGetByNameCommand(const char* args)
return true;
}
std::stringstream message;
message << "|cff00ff00Ticket|r: |cff00ccff" << ticket->guid;
message << ".|r |cff00ff00created by:|r |cff00ccff" << ticket->name;
message << ".|r |cff00ff00Last change:|r |cff00ccff " << secsToTimeString((time(NULL)-ticket->timestamp), true, false) << " ago.";
if(ticket->assignedToGM != 0 && objmgr.GetPlayer(ticket->assignedToGM))
std::string gmname;
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTAGE, (secsToTimeString(time(NULL) - ticket->timestamp, true, false)).c_str());
if(objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname))
{
std::string gmname;
objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname);
message << "|r |cff00ff00Assigned to:|r |cff00ccff " << gmname;
}
message << "|r\n|cff00ff00Message:|r " << ticket->message;
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
ss << PGetParseString(LANG_COMMAND_TICKETLISTMESSAGE, ticket->message.c_str());
if(ticket->comment != "")
{
message << "|r |cff00ff00Comment:|r |cff00ccff " << ticket->comment;
ss << PGetParseString(LANG_COMMAND_TICKETLISTCOMMENT, ticket->comment.c_str());
}
SendSysMessage(message.str().c_str());
SendSysMessage(ss.str().c_str());
return true;
}
@@ -394,7 +421,11 @@ bool ChatHandler::HandleGMTicketCloseByIdCommand(const char* args)
PSendSysMessage(LANG_COMMAND_TICKETCANNOTCLOSE, ticket->guid);
return true;
}
sWorld.SendGMText(LANG_COMMAND_TICKETCLOSED, m_session->GetPlayer()->GetName(), ticket->guid);
std::stringstream ss;
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETCLOSED, m_session->GetPlayer()->GetName());
SendGlobalGMSysMessage(ss.str().c_str());
ticketmgr.RemoveGMTicket(ticket->guid, m_session->GetPlayer()->GetGUID());
Player *plr = objmgr.GetPlayer(ticket->playerGuid);
@@ -457,10 +488,9 @@ bool ChatHandler::HandleGMTicketAssignToCommand(const char* args)
ticket->assignedToGM = tarGUID;
ticketmgr.UpdateGMTicket(ticket);
std::stringstream ss;
ss << "|cff00ff00Ticket:|r ";
ss << "|cffff00ff" << ticket->guid << ". " << cplr->GetName() << "|r";
ss << "|cff00ff00 assigned to:|r ";
ss << "|cffff00ff\"" << gmname << "\".";
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
SendGlobalGMSysMessage(ss.str().c_str());
return true;
}
@@ -481,7 +511,7 @@ bool ChatHandler::HandleGMTicketUnAssignCommand(const char* args)
}
if(ticket->assignedToGM == 0)
{
SendSysMessage(LANG_COMMAND_TICKETNOTASSIGNED);
PSendSysMessage(LANG_COMMAND_TICKETNOTASSIGNED, ticket->guid);
return true;
}
@@ -495,9 +525,10 @@ bool ChatHandler::HandleGMTicketUnAssignCommand(const char* args)
}
std::stringstream ss;
ss << "|cff00ff00Ticket:|r ";
ss << "|cffff00ff" << ticket->guid << ". " << cplr->GetName() << "|r";
ss << "|cff00ff00 unassigned.|r";
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETLISTUNASSIGNED, cplr->GetName());
SendGlobalGMSysMessage(ss.str().c_str());
ticket->assignedToGM = 0;
ticketmgr.UpdateGMTicket(ticket);
@@ -530,13 +561,18 @@ bool ChatHandler::HandleGMTicketCommentCommand(const char* args)
return true;
}
std::string gmname;
objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname);
ticket->comment = comment;
ticketmgr.UpdateGMTicket(ticket);
std::stringstream ss;
ss << "|cff00ff00Ticket:|r ";
ss << "|cffff00ff" << ticket->guid << ". " << cplr->GetName() << "|r";
ss << "|cff00ff00 added comment:|r ";
ss << "|cffff00ff\"" << ticket->comment << "\".";
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
if(objmgr.GetPlayerNameByGUID(ticket->assignedToGM, gmname))
{
ss << PGetParseString(LANG_COMMAND_TICKETLISTASSIGNEDTO, gmname.c_str());
}
ss << PGetParseString(LANG_COMMAND_TICKETLISTADDCOMMENT, cplr->GetName(), ticket->comment.c_str());
SendGlobalGMSysMessage(ss.str().c_str());
return true;
}
@@ -560,9 +596,9 @@ bool ChatHandler::HandleGMTicketDeleteByIdCommand(const char* args)
}
std::stringstream ss;
ss << "|cff00ff00Ticket:|r ";
ss << "|cffff00ff" << m_session->GetPlayer()->GetName() << "|r";
ss << "|cff00ff00 deleted.|r";
ss << PGetParseString(LANG_COMMAND_TICKETLISTGUID, ticket->guid);
ss << PGetParseString(LANG_COMMAND_TICKETLISTNAME, ticket->name.c_str());
ss << PGetParseString(LANG_COMMAND_TICKETDELETED, m_session->GetPlayer()->GetName());
SendGlobalGMSysMessage(ss.str().c_str());
Player *plr = objmgr.GetPlayer(ticket->playerGuid);
ticketmgr.DeleteGMTicketPermanently(ticket->guid);

View File

@@ -111,7 +111,7 @@ void TicketMgr::LoadGMTickets()
InitTicketID();
// Delete all out of object holder
GM_TicketList.clear();
QueryResult *result = CharacterDatabase.Query( "SELECT `guid`, `playerGuid`, `name`, `message`, `timestamp`, `closed`, `assignedto`, `comment` FROM `gm_tickets` WHERE `closed` = '0'" );
QueryResult *result = CharacterDatabase.Query( "SELECT `guid`, `playerGuid`, `name`, `message`, `timestamp`, `closed`, `assignedto`, `comment` FROM `gm_tickets`" );
GM_Ticket *ticket;
if(!result)
@@ -197,7 +197,7 @@ void TicketMgr::InitTicketID()
QueryResult *result = CharacterDatabase.Query("SELECT MAX(guid) FROM gm_tickets");
if(result)
{
m_ticketid = result->Fetch()[0].GetUInt64() + 1;
m_ticketid = result->Fetch()[0].GetUInt64();
delete result;
}
}