diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index 80af03e4561..e1fc7d826f4 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,3 +1,15 @@ +19 May 2015, by Jordie0608 + +Added new table 'watch' for use in flagging ckeys. It shouldn't ever exist, but also added command to de-erroize this new table just in case someone does make it like that. + +To create this new table run the following command: + +CREATE TABLE `watch` (`id` int(11) NOT NULL AUTO_INCREMENT, `ckey` varchar(32) NOT NULL, `reason` text NOT NULL, PRIMARY KEY (`id`)) + +Remember to add prefix to the table name if you use them. + +---------------------------------------------------- + 19 September 2014, by MrStonedOne Removed erro_ from table names. dbconfig.txt has a option allowing you to change the prefix used in code, defaults to "erro_" if left out for legacy reasons. @@ -24,6 +36,4 @@ UPDATE erro_library SET deleted = 1 WHERE id = someid (Replace someid with the id of the book you want to soft delete.) ----------------------------------------------------- - - +---------------------------------------------------- \ No newline at end of file diff --git a/SQL/errofreedatabase.sql b/SQL/errofreedatabase.sql index ae5c0d7ee1c..d9590901deb 100644 --- a/SQL/errofreedatabase.sql +++ b/SQL/errofreedatabase.sql @@ -12,4 +12,5 @@ ALTER TABLE erro_poll_option RENAME TO SS13_poll_option; ALTER TABLE erro_poll_question RENAME TO SS13_poll_question; ALTER TABLE erro_poll_textreply RENAME TO SS13_poll_textreply; ALTER TABLE erro_poll_vote RENAME TO SS13_poll_vote; -ALTER TABLE erro_privacy RENAME TO SS13_privacy; \ No newline at end of file +ALTER TABLE erro_privacy RENAME TO SS13_privacy; +ALTER TABLE erro_watch RENAME TO SS13_watch; \ No newline at end of file diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 30fd894e965..848e28b7f41 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -306,7 +306,16 @@ CREATE TABLE `poll_vote` ( ) ENGINE=InnoDB DEFAULT CHARSET=latin1; /*!40101 SET character_set_client = @saved_cs_client */; --- +--var/reason = input(usr,"Reason?","reason","Metagaming") as text|null + if(!reason) + return + log_admin("[key_name_admin(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) + 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") -- Table structure for table `privacy` -- @@ -332,4 +341,19 @@ CREATE TABLE `privacy` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +-- +-- Table structure for table `watch` +-- + +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`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + -- Dump completed on 2013-03-24 18:02:35 diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index c1b740b6874..b5b9bb0fe2d 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -327,4 +327,19 @@ CREATE TABLE `SS13_privacy` ( /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; +-- +-- Table structure for table `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`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + -- Dump completed on 2013-03-24 18:02:35 \ No newline at end of file diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 9a083fdb5cc..0df0b4cf81d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1076,6 +1076,13 @@ alert(usr,"This ban has already been lifted / does not exist.","Error","Ok") unjobbanpanel() + + + + + + + //Watchlist else if(href_list["watchlist"]) if(!check_rights(R_ADMIN)) return @@ -1093,23 +1100,45 @@ var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") query.Execute() if(query.NextRow()) + switch(alert(usr, "Ckey already flagged", "[sql_ckey] is already on the watchlist, do you want to:", "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_admin(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[3] + 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]', edits = CONCAT(edits,'- [usr] changed watchlist reason from \\\"[watch_reason]\\\" to \\\"[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_admin(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 - log_admin("[key_name_admin(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) 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") - else - log_admin("[key_name_admin(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) - 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_admin(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) else if(href_list["mute"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index d863edeacfb..46881e3cb1f 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -229,11 +229,11 @@ var/next_external_rsc = 0 while (query_cid.NextRow()) related_accounts_cid += "[query_cid.item[1]], " - var/DBQuery/query = dbcon.NewQuery("SELECT ckey, reason FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')") - query.Execute() - if(query.NextRow()) - message_admins("Notice: [key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_cid.item[2]]") - send2irc_adminless_only("Watchlist", "[key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_cid.item[2]]") + 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_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]") var/admin_rank = "Player" if (src.holder && src.holder.rank)