Revert "Revert "[admin] Record player living playtime in notes (#18519)" (#18647)" (#18648)

This reverts commit 1127b18573.
This commit is contained in:
Jamie D
2023-04-25 01:28:45 +01:00
committed by GitHub
parent d7fb7aa8d1
commit 5ececc0e95
6 changed files with 28 additions and 7 deletions

View File

@@ -1,13 +1,20 @@
Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255.
The latest database version is 5.11; The query to update the schema revision table is:
The latest database version is 5.12; The query to update the schema revision table is:
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 11);
INSERT INTO `schema_revision` (`major`, `minor`) VALUES (5, 12);
or
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 11);
INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (5, 12);
In any query remember to add a prefix to the table names if you use one.
version 5.12 2023-04-10
Adds playtime to notes
ALTER TABLE `messages` ADD `playtime` int(10) unsigned DEFAULT NULL;
CREATE TRIGGER messagesTloghours
BEFORE INSERT ON `messages` FOR EACH ROW
SET NEW.playtime = (SELECT minutes FROM role_time rt WHERE rt.ckey = NEW.targetckey AND rt.job = 'Living');
version 5.11 2023-01-03
Adds comment to credentials binding

View File

@@ -326,6 +326,7 @@ CREATE TABLE IF NOT EXISTS `messages` (
`lasteditor` varchar(32) DEFAULT NULL,
`edits` mediumtext DEFAULT NULL,
`deleted` tinyint(3) unsigned NOT NULL DEFAULT 0,
`playtime` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`,`deleted`),
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`,`deleted`),
@@ -560,6 +561,11 @@ END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;
DROP TRIGGER IF EXISTS `messagesTloghours`;
CREATE TRIGGER `messagesTloghours`
BEFORE INSERT ON `messages` FOR EACH ROW
SET NEW.playtime = (SELECT minutes FROM role_time rt WHERE rt.ckey = NEW.targetckey AND rt.job = 'Living');
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View File

@@ -326,6 +326,7 @@ CREATE TABLE IF NOT EXISTS `SS13_messages` (
`lasteditor` varchar(32) DEFAULT NULL,
`edits` mediumtext DEFAULT NULL,
`deleted` tinyint(3) unsigned NOT NULL DEFAULT 0,
`playtime` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_msg_ckey_time` (`targetckey`,`timestamp`,`deleted`),
KEY `idx_msg_type_ckeys_time` (`type`,`targetckey`,`adminckey`,`timestamp`,`deleted`),
@@ -560,6 +561,11 @@ END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;
DROP TRIGGER IF EXISTS messagesTloghours;
CREATE TRIGGER messagesTloghours
BEFORE INSERT ON `SS13_messages` FOR EACH ROW
SET NEW.playtime = (SELECT minutes FROM SS13_role_time rt WHERE rt.ckey = NEW.targetckey AND rt.job = 'Living');
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

View File

@@ -21,7 +21,7 @@
* make sure you add an update to the schema_version stable in the db changelog
*/
#define DB_MINOR_VERSION 11
#define DB_MINOR_VERSION 12
//! ## Timing subsystem
/**

View File

@@ -61,7 +61,7 @@ GLOBAL_PROTECT(exp_to_update)
if(!prefs.exp || !prefs.exp[EXP_TYPE_LIVING])
return pure_numeric ? 0 : "No data"
var/exp_living = text2num(prefs.exp[EXP_TYPE_LIVING])
return get_exp_format(exp_living)
return pure_numeric ? exp_living : get_exp_format(exp_living)
/proc/get_exp_format(expnum)
if(expnum > 60)

View File

@@ -331,7 +331,7 @@
qdel(query_get_type_messages)
if(target_ckey)
var/target_key
var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, round_id, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), DATEDIFF(NOW(), timestamp), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), expire_timestamp FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = :target_ckey AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL) ORDER BY timestamp DESC", list("target_ckey" = target_ckey))
var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, round_id, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), DATEDIFF(NOW(), timestamp), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), expire_timestamp, playtime FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = :target_ckey AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL) ORDER BY timestamp DESC", list("target_ckey" = target_ckey))
if(!query_get_messages.warn_execute())
qdel(query_get_messages)
return
@@ -358,6 +358,8 @@
var/age = text2num(query_get_messages.item[10])
target_key = query_get_messages.item[11]
var/expire_timestamp = query_get_messages.item[12]
var/raw_playtime = query_get_messages.item[13]
var/playtime = (isnull(raw_playtime) ? "" : " ([get_exp_format(text2num(raw_playtime))])")
var/alphatext = ""
var/nsd = CONFIG_GET(number/note_stale_days)
var/nfd = CONFIG_GET(number/note_fresh_days)
@@ -371,7 +373,7 @@
alpha = 10
skipped = TRUE
alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];"
var/list/data = list("<p style='margin:0px;[alphatext]'> <b>[timestamp] | [server] | [admin_key] | ")
var/list/data = list("<p style='margin:0px;[alphatext]'> <b>[timestamp][playtime] | [server] | [admin_key] | ")
data += "Round: #<a href='?_src_=holder;[HrefToken()];viewdemo=[roundnumber]'>[roundnumber]</a>"
if(expire_timestamp)
data += " | Expires [expire_timestamp]"