diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 5139ea8480..5047b31641 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -337,7 +337,7 @@ holder.DB_ban_panel() -/datum/admins/proc/DB_ban_panel(playerckey = null, adminckey = null, page = 0) +/datum/admins/proc/DB_ban_panel(playerckey, adminckey, ip, cid, page = 0) if(!usr.client) return @@ -394,25 +394,29 @@ output += "" output += HrefTokenFormField() output += "Ckey: " - output += "Admin ckey: " + output += "Admin ckey:
" + output += "IP: " + output += "CID: " output += "" output += "" output += "Please note that all jobban bans or unbans are in-effect the following round." - if(adminckey || playerckey) - playerckey = sanitizeSQL(ckey(playerckey)) - adminckey = sanitizeSQL(ckey(adminckey)) - var/playersearch = "" - var/adminsearch = "" + if(adminckey || playerckey || ip || cid) + var/list/searchlist = list() if(playerckey) - playersearch = "AND ckey = '[playerckey]' " + searchlist += "ckey = '[sanitizeSQL(ckey(playerckey))]'" if(adminckey) - adminsearch = "AND a_ckey = '[adminckey]' " + searchlist += "a_ckey = '[sanitizeSQL(ckey(adminckey))]'" + if(ip) + searchlist += "ip = INET_ATON('[sanitizeSQL(ip)]')" + if(cid) + searchlist += "computerid = '[sanitizeSQL(cid)]'" + var/search = searchlist.Join(" AND ") var/bancount = 0 var/bansperpage = 15 var/pagecount = 0 page = text2num(page) - var/datum/DBQuery/query_count_bans = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch]") + var/datum/DBQuery/query_count_bans = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("ban")] WHERE [search]") if(!query_count_bans.warn_execute()) return if(query_count_bans.NextRow()) @@ -438,7 +442,7 @@ output += "OPTIONS" output += "" var/limit = " LIMIT [bansperpage * page], [bansperpage]" - var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE 1 [playersearch] [adminsearch] ORDER BY bantime DESC[limit]") + var/datum/DBQuery/query_search_bans = SSdbcore.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, round_id FROM [format_table_name("ban")] WHERE [search] ORDER BY bantime DESC[limit]") if(!query_search_bans.warn_execute()) return diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index e1ea166cb5..4a332abbb9 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -181,12 +181,14 @@ log_admin("[key_name(usr)] has triggered an event. ([E.name])") return - else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"]) + else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"]) var/adminckey = href_list["dbsearchadmin"] var/playerckey = href_list["dbsearchckey"] + var/ip = href_list["dbsearchip"] + var/cid = href_list["dbsearchcid"] var/page = href_list["dbsearchpage"] - DB_ban_panel(playerckey, adminckey, page) + DB_ban_panel(playerckey, adminckey, ip, cid, page) return else if(href_list["dbbanedit"])