diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index fcd05430..3cdc7914 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -316,6 +316,8 @@ datum/admins/proc/DB_ban_unban_by_id(var/id) output += "" output += "Please note that all jobban bans or unbans are in-effect the following round." + message_admins("Adminckey: [adminckey], playerckey: [playerckey].") + if(adminckey || playerckey) var/blcolor = "#ffeeee" //banned light diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ecf34e46..bae96f6a 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -91,7 +91,8 @@ var/list/admin_verbs_admin = list( ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, - /client/proc/jobbans + /client/proc/jobbans, + /client/proc/warning_panel ) var/list/admin_verbs_sounds = list( /client/proc/play_local_sound, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index aac3e930..fbd50ddf 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2804,4 +2804,11 @@ A.emagged = 0 usr << "Holodeck safeties reset." message_admins("Holdeck reset.") + return + + else if(href_list["warnsearchckey"] || href_list["warnsearchadmin"]) + var/adminckey = href_list["warnsearchadmin"] + var/playerckey = href_list["warnsearchckey"] + + warning_panel(adminckey, playerckey) return \ No newline at end of file diff --git a/code/modules/admin/verbs/warning.dm b/code/modules/admin/verbs/warning.dm index 40fcd955..d6f6cba4 100644 --- a/code/modules/admin/verbs/warning.dm +++ b/code/modules/admin/verbs/warning.dm @@ -65,9 +65,9 @@ if(!check_rights(R_ADMIN|R_MOD)) return if(!warned_ckey || !istext(warned_ckey)) return - if(warned_ckey in admin_datums) - usr << "Error: warn(): You can't warn admins." - return +// if(warned_ckey in admin_datums) +// usr << "Error: warn(): You can't warn admins." +// return var/datum/preferences/D var/client/C = directory[warned_ckey] @@ -101,13 +101,14 @@ severity = 1 var/sqlkey = sanitizeSQL(warned_ckey) - var/computerid - var/ip + var/computerid = null + var/ip = null if(C) computerid = C.computer_id ip = C.address - var/a_ckey = key_name_admin(src) + var/a_ckey = sanitizeSQL(ckey) + message_admins("Data to be entered: [severity], [reason], [notes], [sqlkey], [computerid], [ip], [a_ckey].") var/DBQuery/query_insert = dbcon.NewQuery("INSERT INTO aurora_warnings (id, time, severity, reason, notes, ckey, computerid, ip, a_ckey) VALUES (null, Now(), '[severity]', '[reason]', '[notes]', '[sqlkey]', '[computerid]', '[ip]', '[a_ckey]')") query_insert.Execute() notes_add(warned_ckey, "Warning added by [a_ckey], for: [reason]. || Notes regarding the warning: [notes].") @@ -119,21 +120,22 @@ * A proc for a player to check their own warnings */ -/client/verb/check_warns +/client/verb/check_warns() set name = "My warnings" set category = "OOC" + set desc = "Display warnings issued to you." var/lcolor = "#ffeeee" //light colour, severity = 1 - var/dcolor = "#ffdddd" //dark colour, severity = 2 - var/looksimilar = 0 - var/dat = "" + var/dcolor = "#ffaaaa" //dark colour, severity = 2 establish_db_connection() if(!dbcon.IsConnected()) -// error("Connection to SQL database failed while attempting to fetch a player's warnings. Verb cancelled.") -// dat += "

Database connection error. Warnings were not fetched. Please contact an Administrator.

" + error("Connection to SQL database failed while attempting to fetch a player's warnings. Verb cancelled.") + alert("Connection to the SQL database lost. Aborting. Please alert an Administrator or a member of staff.") return + var/dat = "

Warnings received


" + dat += "" dat += "" dat += "" @@ -148,62 +150,115 @@ while(search_query.NextRow()) var/time = search_query.item[1] - var/seveiry = search_query.item[2] + var/severity = search_query.item[2] var/reason = search_query.item[3] var/a_ckey = search_query.item[4] - if(severity) - dat += "" - else - dat += "" + var/bgcolor = lcolor + if(severity == "1") + bgcolor = dcolor + + dat += "" dat += "" dat += "" dat += "" dat += "" - dat += "
ADMIN
[a_ckey][time][reason]
" - dat += "

" - if(!looksimilar) - dat += "

Search for warnings issued to similar clients

" + dat += "" + dat += " " + dat += "" -/client/proc/check_similar_warns(ip, cid) - dat += "

Warnings issued to players with similar credentials

" - dat += "
" + dat += "" + usr << browse(dat, "window=mywarnings;size=900x500") + +/* + * A proc for an admin/moderator to look up a member's warnings. + */ + +/client/proc/warning_panel() + set category = "Admin" + set name = "Warnings Panel" + set desc = "Look-up warnings assigned to players." + + if(!holder) + return + + holder.warning_panel() + +/datum/admins/proc/warning_panel(var/adminckey = null, var/playerckey = null) + if(!check_rights(R_ADMIN|R_MOD)) return + + var/lcolor = "#ffeeee" //light colour, severity = 1 + var/dcolor = "#ffdddd" //dark colour, severity = 2 establish_db_connection() if(!dbcon.IsConnected()) - error("Connection to SQL database failed while attempting to fetch a player's warnings. Proc cancelled.") - dat +="

Database connection error. Warnings were not fetched. Please contact an Administrator.

" + error("Connection to SQL database failed while attempting to fetch a player's warnings. Verb cancelled.") + alert("Connection to the SQL database lost. Aborting. Please alert an Administrator or a member of staff.") return - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" - dat += "" + var/dat = "

Warning Look-up Panel


" - var/DBQuery/similar_query = dbcon.NewQuery("SELECT time, severity, reason, ckey, a_ckey FROM aurora_warnings WHERE computerid='[cid]' OR ip='[ip]' ORDER BY time DESC") - similar_query.Execute() + //Totally not stealing code from the DB_ban_panel - while(similar_query.NextRow()) - var/time = similar_query.item[1] - var/severity = similar_query.item[2] - var/reason = similar_query.item[3] - var/ckey = similar_query.item[4] - var/a_ckey = similar_query.item[5] + dat += "Search: " + dat += "" + dat += "Ckey:" + dat += "Admin ckey:" + dat += "" + dat += "" - if(severity) - dat += "" - else - dat += "" + if(adminckey || playerckey) - dat += "" - dat += "" - dat += "" - dat += "" + dat += "
ADMINCKEY ISSUED TOTIME ISSUEDREASON
[a_ckey][ckey][time][a_ckey]
" + dat += "" + dat += "" + dat += "" + dat += "" + dat += "" dat += "" - dat += "
ISSUED TOISSUED BYTIME ISSUEDREASON
" \ No newline at end of file + adminckey = ckey(adminckey) + playerckey = ckey(playerckey) + var/paramone = "" + var/paramtwo = "" + if(adminckey) + paramone = "AND a_ckey = '[adminckey]' " + if(playerckey) + paramtwo = "AND ckey = '[playerckey]' " + + var/DBQuery/search_query = dbcon.NewQuery("SELECT time, severity, reason, notes, ckey, a_ckey FROM aurora_warnings WHERE 1 [paramone] [paramtwo] ORDER BY time DESC") + search_query.Execute() + + while(search_query.NextRow()) + var/time = search_query.item[1] + var/severity = search_query.item[2] + var/reason = search_query.item[3] + var/notes = search_query.item[4] + var/ckey = search_query.item[5] + var/a_ckey = search_query.item[6] + + var/bgcolor = lcolor + + if(severity == "1") + bgcolor = dcolor + + dat += "" + dat += "[ckey]" + dat += "[a_ckey]" + dat += "[time]" + dat += "[reason]" + dat += "" + dat += "" + dat += "Staff Notes: \"[notes]\"" + dat += "" + + dat += "" + dat += " " + dat += "" + + dat +="" + + usr << browse(dat, "window=lookupwarns;size=900x500") + feedback_add_details("admin_verb","WARN-LKUP") \ No newline at end of file diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 75c63b67..c761ead0 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -55,14 +55,6 @@ cmd_admin_irc_pm() return - //For looking up warnings issued to similar accounts (based on IP and computerID) - //Proc referenced can be found in warning.dm - if(href_list["warning_similar"]) - var/client/C = locate(href_list["warning_similar"]) - var/ip = C.address - var/cid = C.computerid - check_similar_warns(ip, cid) - //Logs all hrefs if(config && config.log_hrefs && href_logfile)