From 0ceda7939c312adc8ca51e6e291779c672b8d788 Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 Jan 2015 20:42:53 -0700 Subject: [PATCH 1/4] Adds the ability for admins to re-admin themselves once they de-admin. --- code/modules/admin/admin_verbs.dm | 57 +++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4e645879bfe..ccc68b0eac9 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -245,7 +245,8 @@ var/list/admin_verbs_hideable = list( /client/proc/startSinglo, /client/proc/ticklag, /client/proc/cmd_admin_grantfullaccess, - /client/proc/cmd_admin_areatest + /client/proc/cmd_admin_areatest, + /client/proc/readmin ) if(holder) verbs.Remove(holder.rank.adds) @@ -501,11 +502,11 @@ var/list/admin_verbs_hideable = list( set category = "Admin" if(holder) - if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes") - log_admin("[src] deadmined themself.") - message_admins("[src] deadmined themself.") - deadmin() - src << "You are now a normal player." + log_admin("[src] deadmined themself.") + message_admins("[src] deadmined themself.") + deadmin() + verbs += /client/proc/readmin + src << "You are now a normal player." feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/toggle_log_hrefs() @@ -526,3 +527,47 @@ var/list/admin_verbs_hideable = list( if(holder) src.holder.output_ai_laws() +/client/proc/readmin() + set name = "Re-admin self" + set category = "Admin" + set desc = "Regain your admin powers." + var/list/rank_names = list() + for(var/datum/admin_rank/R in admin_ranks) + rank_names[R.name] = R + var/datum/admins/D = admin_datums[ckey] + var/rank = null + if(config.admin_legacy_system) + //load text from file + var/list/Lines = file2list("config/admins.txt") + for(var/line in Lines) + var/list/splitline = text2list(line, " = ") + if(splitline[1] == ckey) + if(splitline.len >= 2) + rank = ckeyEx(splitline[2]) + break + continue + else + if(!dbcon.IsConnected()) + message_admins("Warning, mysql database is not connected.") + return + var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")] WHERE ckey = '[ckey]'") + query.Execute() + while(query.NextRow()) + rank = ckeyEx(query.item[2]) + verbs -= /client/proc/readmin + if(!rank) + return + if(!D) + if(rank_names[rank] == null) + error("Admin rank ([rank]) does not exist.") + return + D = new(rank_names[rank],ckey) + var/client/C = directory[ckey] + D.associate(C) + message_admins("[src] re-adminned.") + log_admin("[src] re-adminned.") + feedback_add_details("admin_verb","RAS") + return + else + src << "You are already an admin." + return From 2b0932047a02b5d6275048a6fc153390eeac40a3 Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 Jan 2015 23:02:18 -0700 Subject: [PATCH 2/4] Improves feedback to the user of the re-admin verb. --- code/modules/admin/admin_verbs.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ccc68b0eac9..22d744ac157 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -549,6 +549,7 @@ var/list/admin_verbs_hideable = list( else if(!dbcon.IsConnected()) message_admins("Warning, mysql database is not connected.") + src << "Warning, mysql database is not connected." return var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")] WHERE ckey = '[ckey]'") query.Execute() @@ -560,12 +561,13 @@ var/list/admin_verbs_hideable = list( if(!D) if(rank_names[rank] == null) error("Admin rank ([rank]) does not exist.") + src << "Admin rank ([rank]) does not exist." return D = new(rank_names[rank],ckey) var/client/C = directory[ckey] D.associate(C) - message_admins("[src] re-adminned.") - log_admin("[src] re-adminned.") + message_admins("[src] re-adminned themselves.") + log_admin("[src] re-adminned themselves.") feedback_add_details("admin_verb","RAS") return else From aed9d6b0e2e9697361643ab7ed5f9f3c8c3294da Mon Sep 17 00:00:00 2001 From: Boggart Date: Thu, 1 Jan 2015 23:05:32 -0700 Subject: [PATCH 3/4] Fixes some tabs being spaces. --- code/modules/admin/admin_verbs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 22d744ac157..6a44885b437 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -549,7 +549,7 @@ var/list/admin_verbs_hideable = list( else if(!dbcon.IsConnected()) message_admins("Warning, mysql database is not connected.") - src << "Warning, mysql database is not connected." + src << "Warning, mysql database is not connected." return var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")] WHERE ckey = '[ckey]'") query.Execute() @@ -561,7 +561,7 @@ var/list/admin_verbs_hideable = list( if(!D) if(rank_names[rank] == null) error("Admin rank ([rank]) does not exist.") - src << "Admin rank ([rank]) does not exist." + src << "Admin rank ([rank]) does not exist." return D = new(rank_names[rank],ckey) var/client/C = directory[ckey] From bb6125a5f13752de84f98e4af08f534c287364b3 Mon Sep 17 00:00:00 2001 From: Boggart Date: Fri, 2 Jan 2015 13:24:49 -0700 Subject: [PATCH 4/4] Fixes feedback on failure due to null rank or disconnected DB. Sanitizes ckey in DB query. --- code/modules/admin/admin_verbs.dm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 6a44885b437..33f4fc66233 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -551,17 +551,18 @@ var/list/admin_verbs_hideable = list( message_admins("Warning, mysql database is not connected.") src << "Warning, mysql database is not connected." return - var/DBQuery/query = dbcon.NewQuery("SELECT ckey, rank FROM [format_table_name("admin")] WHERE ckey = '[ckey]'") + var/sql_ckey = sanitizeSQL(ckey) + var/DBQuery/query = dbcon.NewQuery("SELECT rank FROM [format_table_name("admin")] WHERE ckey = '[sql_ckey]'") query.Execute() while(query.NextRow()) - rank = ckeyEx(query.item[2]) - verbs -= /client/proc/readmin - if(!rank) - return + rank = ckeyEx(query.item[1]) if(!D) if(rank_names[rank] == null) - error("Admin rank ([rank]) does not exist.") - src << "Admin rank ([rank]) does not exist." + var/error_extra = "" + if(!config.admin_legacy_system) + error_extra = " Check mysql DB connection." + error("Error while re-adminning [src], admin rank ([rank]) does not exist.[error_extra]") + src << "Error while re-adminning, admin rank ([rank]) does not exist.[error_extra]" return D = new(rank_names[rank],ckey) var/client/C = directory[ckey] @@ -569,7 +570,9 @@ var/list/admin_verbs_hideable = list( message_admins("[src] re-adminned themselves.") log_admin("[src] re-adminned themselves.") feedback_add_details("admin_verb","RAS") + verbs -= /client/proc/readmin return else src << "You are already an admin." + verbs -= /client/proc/readmin return