diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 628ff6d9bb..632890e654 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -24,6 +24,23 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) QDEL_NULL(cstatclick) QDEL_NULL(rstatclick) return ..() + +/datum/admin_help_tickets/proc/TicketByID(id) + var/list/lists = list(active_tickets, closed_tickets, resolved_tickets) + for(var/I in lists) + for(var/J in I) + var/datum/admin_help/AH = J + if(AH.id == id) + return J + +/datum/admin_help_tickets/proc/TicketsByCKey(ckey) + . = list() + var/list/lists = list(active_tickets, closed_tickets, resolved_tickets) + for(var/I in lists) + for(var/J in I) + var/datum/admin_help/AH = J + if(AH.initiator_ckey == ckey) + . += AH //private /datum/admin_help_tickets/proc/ListInsert(datum/admin_help/new_ticket) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index fa906640de..4f45e06658 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -215,7 +215,7 @@ - +#define IRC_AHELP_USAGE "Usage: ticket " /proc/IrcPm(target,msg,sender) var/client/C = GLOB.directory[target] @@ -225,7 +225,7 @@ var/list/splits = splittext(compliant_msg, " ") if(splits.len && splits[1] == "ticket") if(splits.len < 2) - return "Usage: ticket " + return IRC_AHELP_USAGE switch(splits[2]) if("close") if(ticket) @@ -243,8 +243,36 @@ if(ticket) ticket.Reject(irc_tagged) return "Ticket #[ticket.id] successfully rejected" + if("reopen") + if(ticket) + return "Error: [target] already has ticket #[ticket.id] open" + var/fail = splits.len < 3 ? null : -1 + if(!isnull(fail)) + fail = text2num(splits[3]) + if(isnull(fail)) + return "Error: No/Invalid ticket id specified. [IRC_AHELP_USAGE]" + var/datum/admin_help/AH = GLOB.ahelp_tickets.TicketByID(fail) + if(!AH) + return "Error: Ticket #[fail] not found" + if(AH.initiator_ckey != target) + return "Error: Ticket #[fail] belongs to [AH.initiator_ckey]" + AH.Reopen() + return "Ticket #[ticket.id] successfully reopened" + if("list") + var/list/tickets = GLOB.ahelp_tickets.TicketsByCKey(target) + if(!tickets.len) + return "None" + . = "" + for(var/I in tickets) + var/datum/admin_help/AH = I + if(.) + . += ", " + if(AH == ticket) + . += "Active: " + . += "#[AH.id]" + return else - return "Usage: ticket " + return IRC_AHELP_USAGE return "Error: Ticket could not be found" var/static/stealthkey