diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index 1feed866ade..90915cc5743 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -222,10 +222,12 @@ CREATE TABLE `ban` ( `unbanned_ckey` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `unbanned_computerid` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `unbanned_ip` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `exportable` TINYINT(4) NOT NULL DEFAULT '1', PRIMARY KEY (`id`), KEY `ckey` (`ckey`), KEY `computerid` (`computerid`), - KEY `ip` (`ip`) + KEY `ip` (`ip`), + KEY `exportable` (`exportable`) ) ENGINE=InnoDB AUTO_INCREMENT=58903 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/SQL/updates/47-48.sql b/SQL/updates/47-48.sql new file mode 100644 index 00000000000..8f228566fc4 --- /dev/null +++ b/SQL/updates/47-48.sql @@ -0,0 +1,10 @@ +# Updating SQL from 47 to 48 -AffectedArc07 +# Updates ban table to add an exportable flag column +ALTER TABLE `ban` + ADD COLUMN `exportable` TINYINT NOT NULL DEFAULT '1' AFTER `unbanned_ip`; + +ALTER TABLE `ban` + ADD INDEX `exportable` (`exportable`); + +# Marks all existing bans as non-exportable +UPDATE ban SET exportable=0 diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm index b4b25a50d58..8f1dc6098f5 100644 --- a/code/__DEFINES/misc_defines.dm +++ b/code/__DEFINES/misc_defines.dm @@ -380,7 +380,7 @@ #define INVESTIGATE_BOMB "bombs" // The SQL version required by this version of the code -#define SQL_VERSION 47 +#define SQL_VERSION 48 // Vending machine stuff #define CAT_NORMAL 1 diff --git a/code/modules/admin/db_ban/functions.dm b/code/modules/admin/db_ban/functions.dm index 6ca7a5e2938..b6cd3cd4cd5 100644 --- a/code/modules/admin/db_ban/functions.dm +++ b/code/modules/admin/db_ban/functions.dm @@ -369,6 +369,21 @@ else to_chat(usr, "Cancelled") return + if("makepublic") + if(alert("Make this ban public? You cannot undo this action.", "Warning", "Yes", "No") == "Yes") + var/datum/db_query/make_public_query = SSdbcore.NewQuery("UPDATE ban SET exportable=1 WHERE id=:banid", list( + "banid" = banid + )) + if(!make_public_query.warn_execute()) + qdel(make_public_query) + return + + qdel(make_public_query) + to_chat(usr, "Ban publicised") + log_admin("[usr.ckey] made ban #[banid] on [pckey] public.") + else + to_chat(usr, "Cancelled") + return else to_chat(usr, "Cancelled") return @@ -585,7 +600,7 @@ var/datum/db_query/select_query = SSdbcore.NewQuery({" - SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid, ban_round_id, unbanned_round_id + SELECT id, bantime, bantype, reason, job, duration, expiration_time, ckey, a_ckey, unbanned, unbanned_ckey, unbanned_datetime, edits, ip, computerid, ban_round_id, unbanned_round_id, exportable FROM ban WHERE 1 [playersearch] [adminsearch] [ipsearch] [cidsearch] [bantypesearch] ORDER BY bantime DESC LIMIT 100"}, sql_params) if(!select_query.warn_execute()) @@ -610,6 +625,7 @@ var/cid = select_query.item[15] var/ban_round_id = select_query.item[16] var/unban_round_id = select_query.item[17] + var/public = select_query.item[18] var/lcolor = blcolor var/dcolor = bdcolor @@ -637,7 +653,13 @@ output += "[ckey]" output += "[bantime][ban_round_id ? " (Round [ban_round_id])" : ""]" output += "[ackey]" - output += "[(unbanned) ? "" : "Unban"]" + output += "" + // Unban button + output += unbanned ? "" : "Unban
" + // Make public button + output += public ? "Ban is public" : "Make public" + output += "" + output += "" output += "" output += "IP: [ip]" @@ -665,9 +687,8 @@ qdel(select_query) - var/datum/browser/popup = new(usr, "ban_panel", "
Manual Ban Panel
", 500, 600) + var/datum/browser/popup = new(usr, "ban_panel", "
Manual Ban Panel
", 700, 800) popup.set_content(output.Join("")) - popup.set_window_options("can_close=1;can_minimize=0;can_maximize=0;can_resize=0;titlebar=1;") popup.open() onclose(usr, "ban_panel") diff --git a/config/example/config.toml b/config/example/config.toml index 150d546c9b1..7fc46f58a3e 100644 --- a/config/example/config.toml +++ b/config/example/config.toml @@ -145,7 +145,7 @@ ipc_screens = [ # Enable/disable the database on a whole sql_enabled = false # SQL version. If this is a mismatch, round start will be delayed -sql_version = 47 +sql_version = 48 # SQL server address. Can be an IP or DNS name sql_address = "127.0.0.1" # SQL server port