diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm
index d5354dfa41..ae8c8c4865 100644
--- a/code/modules/admin/DB ban/functions.dm
+++ b/code/modules/admin/DB ban/functions.dm
@@ -263,7 +263,7 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
holder.DB_ban_panel()
-/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/match = null)
+/datum/admins/proc/DB_ban_panel(var/playerckey = null, var/adminckey = null, var/playerip = null, var/playercid = null, var/dbbantype = null, var/match = null)
if(!usr.client)
return
@@ -318,122 +318,147 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
output += "
Ckey: "
output += "Admin ckey: "
output += "IP: "
- output += "CID: "
+ output += "CID: "
+ output += "Ban type: "
+ output += "-- "
+ output += "PERMABAN "
+ output += "TEMPBAN "
+ output += "JOB PERMABAN "
+ output += "JOB TEMPBAN "
+ output += " "
output += " "
- output += " Match(min. 3 characters to search) "
+ output += " Match(min. 3 characters to search by key or ip, and 7 to search by cid) "
output += ""
- output += "Please note that all jobban bans or unbans are in-effect the following round."
+ output += "Please note that all jobban bans or unbans are in-effect the following round. "
+ output += "This search shows only last 100 bans."
- if(adminckey || playerckey || playerip || playercid)
-
- var/blcolor = "#ffeeee" //banned light
- var/bdcolor = "#ffdddd" //banned dark
- var/ulcolor = "#eeffee" //unbanned light
- var/udcolor = "#ddffdd" //unbanned dark
-
- output += ""
- output += ""
- output += "TYPE "
- output += "CKEY "
- output += "TIME APPLIED "
- output += "ADMIN "
- output += "OPTIONS "
- output += " "
+ if(adminckey || playerckey || playerip || playercid || dbbantype)
adminckey = ckey(adminckey)
playerckey = ckey(playerckey)
playerip = sql_sanitize_text(playerip)
playercid = sql_sanitize_text(playercid)
- var/adminsearch = ""
- var/playersearch = ""
- var/ipsearch = ""
- var/cidsearch = ""
- if(!match)
- if(adminckey)
- adminsearch = "AND a_ckey = '[adminckey]' "
- if(playerckey)
- playersearch = "AND ckey = '[playerckey]' "
- if(playerip)
- ipsearch = "AND ip = '[playerip]' "
- if(playercid)
- cidsearch = "AND computerid = '[playercid]' "
- else
- if(adminckey && lentext(adminckey) > 3)
- adminsearch = "AND a_ckey LIKE '[adminckey]%' "
- if(playerckey && lentext(playerckey) > 3)
- playersearch = "AND ckey LIKE '[playerckey]%' "
- if(playerip && lentext(playerip) > 3)
- ipsearch = "AND ip LIKE '[playerip]%' "
- if(playercid && lentext(playercid) > 3)
- cidsearch = "AND computerid LIKE '[playercid]%' "
+ if(adminckey || playerckey || playerip || playercid || dbbantype)
- var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] ORDER BY bantime DESC")
- select_query.Execute()
+ var/blcolor = "#ffeeee" //banned light
+ var/bdcolor = "#ffdddd" //banned dark
+ var/ulcolor = "#eeffee" //unbanned light
+ var/udcolor = "#ddffdd" //unbanned dark
- while(select_query.NextRow())
- var/banid = select_query.item[1]
- var/bantime = select_query.item[2]
- var/bantype = select_query.item[3]
- var/reason = select_query.item[4]
- var/job = select_query.item[5]
- var/duration = select_query.item[6]
- var/expiration = select_query.item[7]
- var/ckey = select_query.item[8]
- var/ackey = select_query.item[9]
- var/unbanned = select_query.item[10]
- var/unbanckey = select_query.item[11]
- var/unbantime = select_query.item[12]
- var/edits = select_query.item[13]
- var/ip = select_query.item[14]
- var/cid = select_query.item[15]
-
- var/lcolor = blcolor
- var/dcolor = bdcolor
- if(unbanned)
- lcolor = ulcolor
- dcolor = udcolor
-
- var/typedesc =""
- switch(bantype)
- if("PERMABAN")
- typedesc = "PERMABAN "
- if("TEMPBAN")
- typedesc = "TEMPBAN ([duration] minutes [(unbanned) ? "" : "(Edit ))"] Expires [expiration] "
- if("JOB_PERMABAN")
- typedesc = "JOBBAN ([job])"
- if("JOB_TEMPBAN")
- typedesc = "TEMP JOBBAN ([job]) ([duration] minutes Expires [expiration]"
-
- output += ""
- output += "[typedesc] "
- output += "[ckey] "
- output += "[bantime] "
- output += "[ackey] "
- output += "[(unbanned) ? "" : "Unban "] "
+ output += ""
+ output += ""
+ output += "TYPE "
+ output += "CKEY "
+ output += "TIME APPLIED "
+ output += "ADMIN "
+ output += "OPTIONS "
output += " "
- output += ""
- output += "IP: [ip] "
- output += "CIP: [cid] "
- output += " "
- output += ""
- output += "Reason: [(unbanned) ? "" : "(Edit )"] \"[reason]\" "
- output += " "
- if(edits)
+
+ var/adminsearch = ""
+ var/playersearch = ""
+ var/ipsearch = ""
+ var/cidsearch = ""
+ var/bantypesearch = ""
+
+ if(!match)
+ if(adminckey)
+ adminsearch = "AND a_ckey = '[adminckey]' "
+ if(playerckey)
+ playersearch = "AND ckey = '[playerckey]' "
+ if(playerip)
+ ipsearch = "AND ip = '[playerip]' "
+ if(playercid)
+ cidsearch = "AND computerid = '[playercid]' "
+ else
+ if(adminckey && lentext(adminckey) > 3)
+ adminsearch = "AND a_ckey LIKE '[adminckey]%' "
+ if(playerckey && lentext(playerckey) > 3)
+ playersearch = "AND ckey LIKE '[playerckey]%' "
+ if(playerip && lentext(playerip) > 3)
+ ipsearch = "AND ip LIKE '[playerip]%' "
+ if(playercid && lentext(playercid) > 7)
+ cidsearch = "AND computerid LIKE '[playercid]%' "
+
+ if(dbbantype)
+ bantypesearch = "AND bantype = "
+
+ switch(dbbantype)
+ if(BANTYPE_TEMP)
+ bantypesearch += "'TEMPBAN' "
+ if(BANTYPE_JOB_PERMA)
+ bantypesearch += "'JOB_PERMABAN' "
+ if(BANTYPE_JOB_TEMP)
+ bantypesearch += "'JOB_TEMPBAN' "
+ else
+ bantypesearch += "'PERMABAN' "
+
+ var/DBQuery/select_query = dbcon.NewQuery("SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid FROM erro_ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] [bantypesearch] ORDER BY bantime DESC LIMIT 100")
+ select_query.Execute()
+
+ while(select_query.NextRow())
+ var/banid = select_query.item[1]
+ var/bantime = select_query.item[2]
+ var/bantype = select_query.item[3]
+ var/reason = select_query.item[4]
+ var/job = select_query.item[5]
+ var/duration = select_query.item[6]
+ var/expiration = select_query.item[7]
+ var/ckey = select_query.item[8]
+ var/ackey = select_query.item[9]
+ var/unbanned = select_query.item[10]
+ var/unbanckey = select_query.item[11]
+ var/unbantime = select_query.item[12]
+ var/edits = select_query.item[13]
+ var/ip = select_query.item[14]
+ var/cid = select_query.item[15]
+
+ var/lcolor = blcolor
+ var/dcolor = bdcolor
+ if(unbanned)
+ lcolor = ulcolor
+ dcolor = udcolor
+
+ var/typedesc =""
+ switch(bantype)
+ if("PERMABAN")
+ typedesc = "PERMABAN "
+ if("TEMPBAN")
+ typedesc = "TEMPBAN ([duration] minutes [(unbanned) ? "" : "(Edit ))"] Expires [expiration] "
+ if("JOB_PERMABAN")
+ typedesc = "JOBBAN ([job])"
+ if("JOB_TEMPBAN")
+ typedesc = "TEMP JOBBAN ([job]) ([duration] minutes Expires [expiration]"
+
output += ""
- output += "EDITS "
+ output += "[typedesc] "
+ output += "[ckey] "
+ output += "[bantime] "
+ output += "[ackey] "
+ output += "[(unbanned) ? "" : "Unban "] "
+ output += " "
+ output += ""
+ output += "IP: [ip] "
+ output += "CIP: [cid] "
output += " "
output += ""
- output += "[edits] "
+ output += "Reason: [(unbanned) ? "" : "(Edit )"] \"[reason]\" "
output += " "
- if(unbanned)
- output += ""
- output += "UNBANNED by admin [unbanckey] on [unbantime] "
+ if(edits)
+ output += " "
+ output += "EDITS "
+ output += " "
+ output += ""
+ output += "[edits] "
+ output += " "
+ if(unbanned)
+ output += ""
+ output += "UNBANNED by admin [unbanckey] on [unbantime] "
+ output += " "
+ output += ""
+ output += "  "
output += " "
- output += ""
- output += "  "
- output += " "
- output += "
"
+ output += "
"
usr << browse(output,"window=lookupbans;size=900x700")
\ No newline at end of file
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 0471d4b2e5..1f98e4ee3a 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -52,16 +52,18 @@
log_admin("[key_name(usr)] has spawned vox raiders.")
if(!src.makeVoxRaiders())
usr << "\red Unfortunately there weren't enough candidates available."
- else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"])
+ else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"])
var/adminckey = href_list["dbsearchadmin"]
var/playerckey = href_list["dbsearchckey"]
var/playerip = href_list["dbsearchip"]
var/playercid = href_list["dbsearchcid"]
+ var/dbbantype = text2num(href_list["dbsearchbantype"])
var/match = 0
+
if("dbmatch" in href_list)
match = 1
- DB_ban_panel(playerckey, adminckey, playerip, playercid, match)
+ DB_ban_panel(playerckey, adminckey, playerip, playercid, dbbantype, match)
return
else if(href_list["dbbanedit"])