Diff

plugins/mod_muc_mam.lua @ 13227:58083329903d

mod_muc_mam: Use period option method
author Kim Alvefur <zash@zash.se>
date Tue, 18 Jul 2023 12:33:51 +0200
parent 13213:50324f66ca2a
child 13268:081f8f9b3b81
line wrap: on
line diff
--- a/plugins/mod_muc_mam.lua	Tue Jul 18 12:32:41 2023 +0200
+++ b/plugins/mod_muc_mam.lua	Tue Jul 18 12:33:51 2023 +0200
@@ -34,7 +34,7 @@
 local timestamp, datestamp = import("prosody.util.datetime", "datetime", "date");
 local default_max_items, max_max_items = 20, module:get_option_integer("max_archive_query_results", 50, 0);
 
-local cleanup_after = module:get_option_string("muc_log_expires_after", "1w");
+local cleanup_after = module:get_option_period("muc_log_expires_after", "1w");
 
 local default_history_length = 20;
 local max_history_length = module:get_option_integer("max_history_messages", math.huge, 0);
@@ -397,7 +397,7 @@
 	local id, err = archive:append(room_node, nil, stored_stanza, time, with);
 
 	if not id and err == "quota-limit" then
-		if type(cleanup_after) == "number" then
+		if cleanup_after ~= math.huge then
 			module:log("debug", "Room '%s' over quota, cleaning archive", room_node);
 			local cleaned = archive:delete(room_node, {
 				["end"] = (os.time() - cleanup_after);
@@ -467,20 +467,10 @@
 
 -- Cleanup
 
-if cleanup_after ~= "never" then
+if cleanup_after ~= math.huge then
 	local cleanup_storage = module:open_store("muc_log_cleanup");
 	local cleanup_map = module:open_store("muc_log_cleanup", "map");
 
-	local day = 86400;
-	local multipliers = { d = day, w = day * 7, m = 31 * day, y = 365.2425 * day };
-	local n, m = cleanup_after:lower():match("(%d+)%s*([dwmy]?)");
-	if not n then
-		module:log("error", "Could not parse muc_log_expires_after string %q", cleanup_after);
-		return false;
-	end
-
-	cleanup_after = tonumber(n) * ( multipliers[m] or 1 );
-
 	module:log("debug", "muc_log_expires_after = %d -- in seconds", cleanup_after);
 
 	if not archive.delete then