diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index dfd4b30dad3..a7308fea1b0 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,3 +1,13 @@ +27 August 2015, by Jordie0608 + +Modified table 'watch', removing 'id' column, making 'ckey' primary and adding the columns 'timestamp', 'adminckey', 'last_editor' and 'edits'. + +ALTER TABLE `feedback`.`watch` DROP COLUMN `id`, ADD COLUMN `timestamp` datetime NOT NULL AFTER `reason`, ADD COLUMN `adminckey` varchar(32) NOT NULL AFTER `timestamp`, ADD COLUMN `last_editor` varchar(32) NULL AFTER `adminckey`, ADD COLUMN `edits` text NULL AFTER `last_editor`, DROP PRIMARY KEY, ADD PRIMARY KEY (`ckey`) + +Remember to add a prefix to the table name if you use them. + +---------------------------------------------------- + 14 August 2015, by Jordie0608 Added new table 'notes' to replace BYOND's .sav note system. diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index ae8bf1859d6..6b0518bda38 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -314,10 +314,13 @@ DROP TABLE IF EXISTS `watch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `watch` ( - `id` int(11) NOT NULL AUTO_INCREMENT, `ckey` varchar(32) NOT NULL, `reason` text NOT NULL, - PRIMARY KEY (`id`) + `timestamp` datetime NOT NULL, + `adminckey` varchar(32) NOT NULL, + `last_editor` varchar(32), + `edits` text, + PRIMARY KEY (`ckey`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index b49032a7ee1..a800b11013f 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -302,17 +302,20 @@ CREATE TABLE `SS13_poll_vote` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `watch` +-- Table structure for table `SS13_watch` -- DROP TABLE IF EXISTS `SS13_watch`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `SS13_watch` ( - `id` int(11) NOT NULL AUTO_INCREMENT, `ckey` varchar(32) NOT NULL, `reason` text NOT NULL, - PRIMARY KEY (`id`) + `timestamp` datetime NOT NULL, + `adminckey` varchar(32) NOT NULL, + `last_editor` varchar(32), + `edits` text, + PRIMARY KEY (`ckey`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index e40f3490f91..0955e000881 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -48,7 +48,11 @@ var/global/floorIsLava = 0 body += "Jobban | " body += "Identity Ban | " body += "Notes | " - body += "Watchlist Flag " + if(M.client.check_watchlist(M.client.ckey)) + body += "Remove from Watchlist | " + body += "Edit Watchlist reason " + else + body += "Add to Watchlist " if(M.client) body += "| Prison | " diff --git a/code/modules/admin/admin_investigate.dm b/code/modules/admin/admin_investigate.dm index 103d7eac30d..39c3dcf064e 100644 --- a/code/modules/admin/admin_investigate.dm +++ b/code/modules/admin/admin_investigate.dm @@ -22,7 +22,7 @@ F << "[time_stamp()] \ref[src] ([x],[y],[z]) || [src] [message]
" //ADMINVERBS -/client/proc/investigate_show( subject in list("hrefs","notes","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter", "atmos", "experimentor", "kudzu") ) +/client/proc/investigate_show( subject in list("hrefs","notes","watchlist","ntsl","singulo","wires","telesci", "gravity", "records", "cargo", "supermatter", "atmos", "experimentor", "kudzu") ) set name = "Investigate" set category = "Admin" if(!holder) return @@ -46,3 +46,5 @@ return if("notes") show_note() + if("watchlist") + watchlist_show() diff --git a/code/modules/admin/admin_memo.dm b/code/modules/admin/admin_memo.dm index 7c40c3aa53a..883c7fcda0c 100644 --- a/code/modules/admin/admin_memo.dm +++ b/code/modules/admin/admin_memo.dm @@ -19,7 +19,7 @@ var/sql_ckey = sanitizeSQL(src.ckey) switch(task) if("Write") - var/DBQuery/query_memocheck = dbcon.NewQuery("SELECT ckey FROM [format_table_name("memo")] WHERE (ckey = '[sql_ckey]')") + var/DBQuery/query_memocheck = dbcon.NewQuery("SELECT ckey FROM [format_table_name("memo")] WHERE ckey = '[sql_ckey]'") if(!query_memocheck.Execute()) var/err = query_memocheck.ErrorMsg() log_game("SQL ERROR obtaining ckey from memo table. Error : \[[err]\]\n") @@ -27,7 +27,7 @@ if(query_memocheck.NextRow()) src << "You already have set a memo." return - var/memotext = input(src,"Write your Memo","Memo") as text|null + var/memotext = input(src,"Write your Memo","Memo") as message if(!memotext) return memotext = sanitizeSQL(memotext) @@ -56,20 +56,20 @@ if(!target_ckey) return var/target_sql_ckey = sanitizeSQL(target_ckey) - var/DBQuery/query_memofind = dbcon.NewQuery("SELECT ckey, memotext FROM [format_table_name("memo")] WHERE (ckey = '[target_sql_ckey]')") + var/DBQuery/query_memofind = dbcon.NewQuery("SELECT memotext FROM [format_table_name("memo")] WHERE ckey = '[target_sql_ckey]'") if(!query_memofind.Execute()) var/err = query_memofind.ErrorMsg() - log_game("SQL ERROR obtaining ckey, memotext from memo table. Error : \[[err]\]\n") + log_game("SQL ERROR obtaining memotext from memo table. Error : \[[err]\]\n") return if(query_memofind.NextRow()) - var/old_memo = query_memofind.item[2] - var/new_memo = input("Input new memo", "New Memo", "[old_memo]", null) as null|text + var/old_memo = query_memofind.item[1] + var/new_memo = input("Input new memo", "New Memo", "[old_memo]", null) as message if(!new_memo) return new_memo = sanitizeSQL(new_memo) var/edit_text = "Edited by [sql_ckey] on [SQLtime()] from
[old_memo]
to
[new_memo]
" edit_text = sanitizeSQL(edit_text) - var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE (ckey = '[target_sql_ckey]')") + var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("memo")] SET memotext = '[new_memo]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE ckey = '[target_sql_ckey]'") if(!update_query.Execute()) var/err = update_query.ErrorMsg() log_game("SQL ERROR editing memo. Error : \[[err]\]\n") diff --git a/code/modules/admin/sql_notes.dm b/code/modules/admin/sql_notes.dm index 730e4531575..360eac2b357 100644 --- a/code/modules/admin/sql_notes.dm +++ b/code/modules/admin/sql_notes.dm @@ -3,13 +3,14 @@ usr << "Failed to establish database connection." return if(!target_ckey) - var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text|null) + var/new_ckey = ckey(input(usr,"Who would you like to add a note for?","Enter a ckey",null) as text) if(!new_ckey) return + new_ckey = sanitizeSQL(new_ckey) var/DBQuery/query_find_ckey = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'") if(!query_find_ckey.Execute()) var/err = query_find_ckey.ErrorMsg() - log_game("SQL ERROR obtaining ckey from notes table. Error : \[[err]\]\n") + log_game("SQL ERROR obtaining ckey from player table. Error : \[[err]\]\n") return if(!query_find_ckey.NextRow()) usr << "[new_ckey] has not been seen before, you can only add notes to known players." diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 3093d959d6d..0baffec09b0 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -446,12 +446,12 @@ mins = min(525599,mins) minutes = CMinutes + mins duration = GetExp(minutes) - reason = input(usr,"Reason?","reason",reason2) as text|null + reason = input(usr,"Please State Reason","Reason",reason2) as message if(!reason) return if("No") temp = 0 duration = "Perma" - reason = input(usr,"Reason?","reason",reason2) as text|null + reason = input(usr,"Please State Reason","Reason",reason2) as message if(!reason) return log_admin("[key_name(usr)] edited [banned_key]'s ban. Reason: [reason] Duration: [duration]") @@ -497,7 +497,7 @@ else switch(alert("Appearance ban [M.ckey]?",,"Yes","No", "Cancel")) if("Yes") - var/reason = input(usr,"Reason?","reason","Metafriender") as text|null + var/reason = input(usr,"Please State Reason","Reason") as message if(!reason) return ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]") @@ -905,7 +905,7 @@ var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null if(!mins) return - var/reason = input(usr,"Reason?","Please State Reason","") as text|null + var/reason = input(usr,"Please State Reason","Reason") as message if(!reason) return @@ -929,7 +929,7 @@ href_list["jobban2"] = 1 // lets it fall through and refresh return 1 if("No") - var/reason = input(usr,"Reason?","Please State Reason","") as text|null + var/reason = input(usr,"Please State Reason","Reason") as message if(reason) var/msg for(var/job in notbannedlist) @@ -1066,7 +1066,7 @@ if(!mins) return if(mins >= 525600) mins = 525599 - var/reason = input(usr,"Reason?","reason","Griefer") as text|null + var/reason = input(usr,"Please State Reason","Reason") as message if(!reason) return AddBan(M.ckey, M.computer_id, reason, usr.ckey, 1, mins) @@ -1086,7 +1086,7 @@ del(M.client) //qdel(M) // See no reason why to delete mob. Important stuff can be lost. And ban can be lifted before round ends. if("No") - var/reason = input(usr,"Reason?","reason","Griefer") as text|null + var/reason = input(usr,"Please State Reason","Reason") as message if(!reason) return switch(alert(usr,"IP ban?",,"Yes","No","Cancel")) @@ -1126,61 +1126,46 @@ unjobbanpanel() //Watchlist - else if(href_list["watchlist"]) - if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["watchlist"]) - if(!dbcon.IsConnected()) - usr << "Failed to establish database connection." + else if(href_list["watchadd"]) + var/target_ckey = locate(href_list["watchadd"]) + usr.client.watchlist_add(target_ckey) + + else if(href_list["watchremove"]) + var/target_ckey = href_list["watchremove"] + usr.client.watchlist_remove(target_ckey) + + else if(href_list["watchedit"]) + var/target_ckey = href_list["watchedit"] + usr.client.watchlist_edit(target_ckey) + + else if(href_list["watchaddbrowse"]) + usr.client.watchlist_add(null, 1) + + else if(href_list["watchremovebrowse"]) + var/target_ckey = href_list["watchremovebrowse"] + usr.client.watchlist_remove(target_ckey, 1) + + else if(href_list["watcheditbrowse"]) + var/target_ckey = href_list["watcheditbrowse"] + usr.client.watchlist_edit(target_ckey, 1) + + else if(href_list["watchsearch"]) + var/target_ckey = href_list["watchsearch"] + usr.client.watchlist_show(target_ckey) + + else if(href_list["watchshow"]) + usr.client.watchlist_show() + + else if(href_list["watcheditlog"]) + var/target_ckey = sanitizeSQL("[href_list["watcheditlog"]]") + var/DBQuery/query_watchedits = dbcon.NewQuery("SELECT edits FROM [format_table_name("watch")] WHERE ckey = '[target_ckey]'") + if(!query_watchedits.Execute()) + var/err = query_watchedits.ErrorMsg() + log_game("SQL ERROR obtaining edits from watch table. Error : \[[err]\]\n") return - if(!ismob(M)) - usr << "This can only be used on instances of type /mob" - return - if(!M.ckey) - usr << "This mob has no ckey" - return - var/sql_ckey = sanitizeSQL(M.ckey) - var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") - query.Execute() - if(query.NextRow()) - switch(alert(usr, "[sql_ckey] is already on the watchlist, do you want to:", "Ckey already flagged", "Remove", "Edit reason", "Cancel")) - if("Cancel") - return - if("Remove") - var/DBQuery/query_watchdel = dbcon.NewQuery("DELETE FROM [format_table_name("watch")] WHERE ckey = '[sql_ckey]'") - if(!query_watchdel.Execute()) - var/err = query_watchdel.ErrorMsg() - log_game("SQL ERROR during removing watch entry. Error : \[[err]\]\n") - return - log_admin("[key_name(usr)] has removed [key_name_admin(M)] from the watchlist") - message_admins("[key_name_admin(usr)] has removed [key_name_admin(M)] from the watchlist", 1) - if("Edit reason") - var/DBQuery/query_reason = dbcon.NewQuery("SELECT ckey, reason FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") - query_reason.Execute() - if(query_reason.NextRow()) - var/watch_reason = query_reason.item[2] - var/new_reason = input("Insert new reason", "New Reason", "[watch_reason]", null) as null|text - new_reason = sanitizeSQL(new_reason) - if(!new_reason) - return - var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]' WHERE (ckey = '[sql_ckey]')") - if(!update_query.Execute()) - var/err = update_query.ErrorMsg() - log_game("SQL ERROR during edit watch entry reason. Error : \[[err]\]\n") - return - log_admin("[key_name(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1) - message_admins("[key_name_admin(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1) - else - var/reason = input(usr,"Reason?","reason","Metagaming") as text|null - if(!reason) - return - reason = sanitizeSQL(reason) - var/DBQuery/query_watchadd = dbcon.NewQuery("INSERT INTO [format_table_name("watch")] (ckey, reason) VALUES ('[sql_ckey]', '[reason]')") - if(!query_watchadd.Execute()) - var/err = query_watchadd.ErrorMsg() - log_game("SQL ERROR during adding new watch entry. Error : \[[err]\]\n") - return - log_admin("[key_name(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]") - message_admins("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]", 1) + if(query_watchedits.NextRow()) + var/edit_log = query_watchedits.item[1] + usr << browse(edit_log,"window=watchedits") else if(href_list["mute"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index cf13ea9fe4c..58394d17d93 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -171,7 +171,7 @@ return .(O.vars[variable]) if("text") - var/new_value = input("Enter new text:","Text",O.vars[variable]) as text|null + var/new_value = input("Enter new text:","Text",O.vars[variable]) as message|null if(new_value == null) return var/process_vars = 0 diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 9cc7f8a7a76..67887272f82 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -49,7 +49,7 @@ var/list/VVckey_edit = list("key", "ckey") switch(class) if("text") - var_value = input("Enter new text:","Text") as null|text + var_value = input("Enter new text:","Text") as null|message if("num") var_value = input("Enter new number:","Num") as null|num @@ -106,7 +106,7 @@ var/list/VVckey_edit = list("key", "ckey") switch(class) if("text") - var_value = input("Enter new text:","Text") as text + var_value = input("Enter new text:","Text") as message if("num") var_value = input("Enter new number:","Num") as num @@ -302,7 +302,7 @@ var/list/VVckey_edit = list("key", "ckey") return if("text") - new_var = input("Enter new text:","Text") as text + new_var = input("Enter new text:","Text") as message if(findtext(new_var,"\[")) var/process_vars = alert(usr,"\[] detected in string, process as variables?","Process Variables?","Yes","No") @@ -557,7 +557,7 @@ var/list/VVckey_edit = list("key", "ckey") return .(O.vars[variable]) if("text") - var/var_new = input("Enter new text:","Text",O.vars[variable]) as null|text + var/var_new = input("Enter new text:","Text",O.vars[variable]) as null|message if(var_new==null) return if(findtext(var_new,"\[")) diff --git a/code/modules/admin/watchlist.dm b/code/modules/admin/watchlist.dm new file mode 100644 index 00000000000..687dbb16715 --- /dev/null +++ b/code/modules/admin/watchlist.dm @@ -0,0 +1,118 @@ +client/proc/watchlist_add(target_ckey, browse = 0) + if(!target_ckey) + var/new_ckey = ckey(input(usr,"Who would you like to add to the watchlist?","Enter a ckey",null) as text) + if(!new_ckey) + return + new_ckey = sanitizeSQL(new_ckey) + var/DBQuery/query_watchfind = dbcon.NewQuery("SELECT ckey FROM [format_table_name("player")] WHERE ckey = '[new_ckey]'") + if(!query_watchfind.Execute()) + var/err = query_watchfind.ErrorMsg() + log_game("SQL ERROR obtaining ckey from player table. Error : \[[err]\]\n") + return + if(!query_watchfind.NextRow()) + usr << "[new_ckey] has not been seen before, you can only add known players." + return + else + target_ckey = new_ckey + var/target_sql_ckey = sanitizeSQL(target_ckey) + if(check_watchlist(target_sql_ckey)) + usr << "[target_sql_ckey] is already on the watchlist." + return + var/reason = input(usr,"Please State Reason","Reason") as message + if(!reason) + return + reason = sanitizeSQL(reason) + var/timestamp = SQLtime() + var/adminckey = usr.ckey + if(!adminckey) + return + var/admin_sql_ckey = sanitizeSQL(adminckey) + var/DBQuery/query_watchadd = dbcon.NewQuery("INSERT INTO [format_table_name("watch")] (ckey, reason, adminckey, timestamp) VALUES ('[target_sql_ckey]', '[reason]', '[admin_sql_ckey]', '[timestamp]')") + if(!query_watchadd.Execute()) + var/err = query_watchadd.ErrorMsg() + log_game("SQL ERROR during adding new watch entry. Error : \[[err]\]\n") + return + log_admin("[key_name(usr)] has added [target_ckey] to the watchlist - Reason: [reason]") + message_admins("[key_name_admin(usr)] has added [target_ckey] to the watchlist - Reason: [reason]", 1) + if(browse) + watchlist_show(target_sql_ckey) + +client/proc/watchlist_remove(target_ckey, browse = 0) + var/target_sql_ckey = sanitizeSQL(target_ckey) + var/DBQuery/query_watchdel = dbcon.NewQuery("DELETE FROM [format_table_name("watch")] WHERE ckey = '[target_sql_ckey]'") + if(!query_watchdel.Execute()) + var/err = query_watchdel.ErrorMsg() + log_game("SQL ERROR during removing watch entry. Error : \[[err]\]\n") + return + log_admin("[key_name(usr)] has removed [target_ckey] from the watchlist") + message_admins("[key_name_admin(usr)] has removed [target_ckey] from the watchlist", 1) + if(browse) + watchlist_show() + +client/proc/watchlist_edit(target_ckey, browse = 0) + var/target_sql_ckey = sanitizeSQL(target_ckey) + var/DBQuery/query_watchreason = dbcon.NewQuery("SELECT reason FROM [format_table_name("watch")] WHERE ckey = '[target_sql_ckey]'") + if(!query_watchreason.Execute()) + var/err = query_watchreason.ErrorMsg() + log_game("SQL ERROR obtaining reason from watch table. Error : \[[err]\]\n") + return + if(query_watchreason.NextRow()) + var/watch_reason = query_watchreason.item[1] + var/new_reason = input("Input new reason", "New Reason", "[watch_reason]") as message + new_reason = sanitizeSQL(new_reason) + if(!new_reason) + return + var/sql_ckey = sanitizeSQL(usr.ckey) + var/edit_text = "Edited by [sql_ckey] on [SQLtime()] from
[watch_reason]
to
[new_reason]
" + edit_text = sanitizeSQL(edit_text) + var/DBQuery/query_watchupdate = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]', last_editor = '[sql_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE ckey = '[target_sql_ckey]'") + if(!query_watchupdate.Execute()) + var/err = query_watchupdate.ErrorMsg() + log_game("SQL ERROR editing watchlist reason. Error : \[[err]\]\n") + return + log_admin("[key_name(usr)] has edited [target_ckey]'s watchlist reason from [watch_reason] to [new_reason]") + message_admins("[key_name_admin(usr)] has edited [target_ckey]'s watchlist reason from
[watch_reason]
to
[new_reason]") + if(browse) + watchlist_show(target_sql_ckey) + +client/proc/watchlist_show(search) + var/output + output += "
\ + \ + \ +
" + output += "\[Clear Search\] \[Add Ckey\]" + output += "
" + if(search) + search = "^[search]" + else + search = "^." + search = sanitizeSQL(search) + var/DBQuery/query_watchlist = dbcon.NewQuery("SELECT ckey, reason, adminckey, timestamp, last_editor FROM [format_table_name("watch")] WHERE ckey REGEXP '[search]' ORDER BY ckey") + if(!query_watchlist.Execute()) + var/err = query_watchlist.ErrorMsg() + log_game("SQL ERROR obtaining ckey, reason, adminckey, timestamp, last_editor from watch table. Error : \[[err]\]\n") + return + while(query_watchlist.NextRow()) + var/ckey = query_watchlist.item[1] + var/reason = query_watchlist.item[2] + var/adminckey = query_watchlist.item[3] + var/timestamp = query_watchlist.item[4] + var/last_editor = query_watchlist.item[5] + output += "[ckey] | Added by [adminckey] on [timestamp] \[Remove\] \[Edit Reason\]" + if(last_editor) + output += " Last edit by [last_editor] (Click here to see edit log)" + output += "
[reason]
" + usr << browse(output, "window=watchwin;size=900x500") + +client/proc/check_watchlist(target_ckey) + var/target_sql_ckey = sanitizeSQL(target_ckey) + var/DBQuery/query_watch = dbcon.NewQuery("SELECT reason FROM [format_table_name("watch")] WHERE ckey = '[target_sql_ckey]'") + if(!query_watch.Execute()) + var/err = query_watch.ErrorMsg() + log_game("SQL ERROR obtaining reason from watch table. Error : \[[err]\]\n") + return + if(query_watch.NextRow()) + return query_watch.item[1] + else + return 0 diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 233fee84513..6958f17e392 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -234,11 +234,10 @@ var/next_external_rsc = 0 while (query_cid.NextRow()) related_accounts_cid += "[query_cid.item[1]], " - var/DBQuery/query_watch = dbcon.NewQuery("SELECT ckey, reason FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") - query_watch.Execute() - if(query_watch.NextRow()) - message_admins("Notice: [key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") - send2irc_adminless_only("Watchlist", "[key_name(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") + var/watchreason = check_watchlist(sql_ckey) + if(watchreason) + message_admins("Notice: [key_name_admin(src)] is on the watchlist and has just connected - Reason: [watchreason]") + send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]") var/admin_rank = "Player" if (src.holder && src.holder.rank) diff --git a/tgstation.dme b/tgstation.dme index 383abb503be..26859927fa4 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -824,6 +824,7 @@ #include "code\modules\admin\secrets.dm" #include "code\modules\admin\sql_notes.dm" #include "code\modules\admin\topic.dm" +#include "code\modules\admin\watchlist.dm" #include "code\modules\admin\DB ban\functions.dm" #include "code\modules\admin\permissionverbs\permissionedit.dm" #include "code\modules\admin\verbs\adminhelp.dm"