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 += "