Job ban refactors/fixes

This commit is contained in:
Krausus
2016-07-09 06:05:07 -04:00
parent 92be600c59
commit 918ed392bd
4 changed files with 85 additions and 316 deletions
+16 -2
View File
@@ -17,6 +17,7 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
var/kickbannedckey //Defines whether this proc should kick the banned person, if they are connected (if banned_mob is defined).
//some ban types kick players after this proc passes (tempban, permaban), but some are specific to db_ban, so
//they should kick within this proc.
var/isjobban // For job bans, which need to be inserted into the job ban lists
switch(bantype)
if(BANTYPE_PERMA)
bantype_str = "PERMABAN"
@@ -31,9 +32,11 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
bantype_str = "JOB_PERMABAN"
duration = -1
bantype_pass = 1
isjobban = 1
if(BANTYPE_JOB_TEMP)
bantype_str = "JOB_TEMPBAN"
bantype_pass = 1
isjobban = 1
if(BANTYPE_APPEARANCE)
bantype_str = "APPEARANCE_BAN"
duration = -1
@@ -134,11 +137,15 @@ datum/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration =
if(banned_mob && banned_mob.client && banned_mob.client.ckey == banckey)
del(banned_mob.client)
if(isjobban)
jobban_client_fullban(ckey, job)
datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
if(!check_rights(R_BAN)) return
var/bantype_str
var/isjobban // For job bans, which need to be removed from the job ban lists
if(bantype)
var/bantype_pass = 0
switch(bantype)
@@ -151,9 +158,11 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
if(BANTYPE_JOB_PERMA)
bantype_str = "JOB_PERMABAN"
bantype_pass = 1
isjobban = 1
if(BANTYPE_JOB_TEMP)
bantype_str = "JOB_TEMPBAN"
bantype_pass = 1
isjobban = 1
if(BANTYPE_APPEARANCE)
bantype_str = "APPEARANCE_BAN"
bantype_pass = 1
@@ -206,6 +215,8 @@ datum/admins/proc/DB_ban_unban(var/ckey, var/bantype, var/job = "")
return
DB_ban_unban_by_id(ban_id)
if(isjobban)
jobban_unban_client(ckey, job)
datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
@@ -215,18 +226,20 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
to_chat(usr, "Cancelled")
return
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, duration, reason FROM [format_table_name("ban")] WHERE id = [banid]")
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, duration, reason, job FROM [format_table_name("ban")] WHERE id = [banid]")
query.Execute()
var/eckey = usr.ckey //Editing admin ckey
var/pckey //(banned) Player ckey
var/duration //Old duration
var/reason //Old reason
var/job //Old job
if(query.NextRow())
pckey = query.item[1]
duration = query.item[2]
reason = query.item[3]
job = query.item[4]
else
to_chat(usr, "Invalid ban id. Contact the database admin")
return
@@ -259,6 +272,8 @@ datum/admins/proc/DB_ban_edit(var/banid = null, var/param = null)
if("unban")
if(alert("Unban [pckey]?", "Unban?", "Yes", "No") == "Yes")
DB_ban_unban_by_id(banid)
if(job && length(job))
jobban_unban_client(pckey, job)
return
else
to_chat(usr, "Cancelled")
@@ -396,7 +411,6 @@ datum/admins/proc/DB_ban_unban_by_id(var/id)
output += "<br><input type='submit' value='search'><br>"
output += "<input type='checkbox' value='[match]' name='dbmatch' [match? "checked=\"1\"" : null]> Match(min. 3 characters to search by key or ip, and 7 to search by cid)<br>"
output += "</form>"
output += "Please note that all jobban bans or unbans are in-effect the following round.<br>"
output += "This search shows only last 100 bans."
if(adminckey || playerckey || playerip || playercid || dbbantype)