diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 850452716a3..97302181e96 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -29,6 +29,11 @@ GLOBAL_PROTECT(href_token) var/href_token + /// Link from the database pointing to the admin's feedback forum + var/cached_forum_link + /// Last access time in deciseconds (playing nice with the MSO 10 second rule) + var/last_forum_access_time + var/deadmined var/datum/filter_editor/filteriffic @@ -165,12 +170,29 @@ GLOBAL_PROTECT(href_token) owner.holder = null owner = null +/// Returns the feedback forum thread for the admin holder's owner, as according to DB. +/datum/admins/proc/feedback_link() + if(world.time - last_forum_access_time <= 10 SECONDS) + return cached_forum_link + + last_forum_access_time = world.time + + var/datum/db_query/feedback_query = SSdbcore.NewQuery("SELECT feedback FROM [format_table_name("admin")] WHERE ckey = '[owner.ckey]'") + + if(!feedback_query.Execute()) + log_sql("Error retrieving feedback link for [src]") + return cached_forum_link + if(!feedback_query.NextRow()) + return FALSE // no feedback link exists + + cached_forum_link = feedback_query.item[1] + return cached_forum_link + /datum/admins/proc/check_for_rights(rights_required) if(rights_required && !(rights_required & rank_flags())) return FALSE return TRUE - /datum/admins/proc/check_if_greater_rights_than_holder(datum/admins/other) if(!other) return TRUE //they have no rights diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 0371a3d70ab..6dea707240f 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -15,44 +15,44 @@ var/mob/dead/observer/G = src.mob if(!G.started_as_observer)//If you aghost to do this, KorPhaeron will deadmin you in your sleep. log_admin("[key_name(usr)] checked advanced who in-round") - for(var/client/C in GLOB.clients) - var/entry = "\t[C.key]" - if(C.holder && C.holder.fakekey) - entry += " (as [C.holder.fakekey])" - if (isnewplayer(C.mob)) + for(var/client/client in GLOB.clients) + var/entry = "\t[client.key]" + if(client.holder && client.holder.fakekey) + entry += " (as [client.holder.fakekey])" + if (isnewplayer(client.mob)) entry += " - In Lobby" else - entry += " - Playing as [C.mob.real_name]" - switch(C.mob.stat) + entry += " - Playing as [client.mob.real_name]" + switch(client.mob.stat) if(UNCONSCIOUS, HARD_CRIT) entry += " - Unconscious" if(DEAD) - if(isobserver(C.mob)) - var/mob/dead/observer/O = C.mob + if(isobserver(client.mob)) + var/mob/dead/observer/O = client.mob if(O.started_as_observer) entry += " - Observing" else entry += " - DEAD" else entry += " - DEAD" - if(is_special_character(C.mob)) + if(is_special_character(client.mob)) entry += " - Antagonist" - entry += " [ADMIN_QUE(C.mob)]" - entry += " ([round(C.avgping, 1)]ms)" + entry += " [ADMIN_QUE(client.mob)]" + entry += " ([round(client.avgping, 1)]ms)" Lines += entry else//If they don't have +ADMIN, only show hidden admins - for(var/client/C in GLOB.clients) - var/entry = "[C.key]" - if(C.holder && C.holder.fakekey) - entry += " (as [C.holder.fakekey])" - entry += " ([round(C.avgping, 1)]ms)" + for(var/client/client in GLOB.clients) + var/entry = "[client.key]" + if(client.holder && client.holder.fakekey) + entry += " (as [client.holder.fakekey])" + entry += " ([round(client.avgping, 1)]ms)" Lines += entry else - for(var/client/C in GLOB.clients) - if(C.holder && C.holder.fakekey) - Lines += "[C.holder.fakekey] ([round(C.avgping, 1)]ms)" + for(var/client/client in GLOB.clients) + if(client.holder && client.holder.fakekey) + Lines += "[client.holder.fakekey] ([round(client.avgping, 1)]ms)" else - Lines += "[C.key] ([round(C.avgping, 1)]ms)" + Lines += "[client.key] ([round(client.avgping, 1)]ms)" var/num_lines = 0 msg += "