changeset 583:a634b116c694

mod_muc_log_http: Use YYYY-MM-DD in URLs instead of the confusing YYMMDD.
author Waqas Hussain <waqas20@gmail.com>
date Wed, 25 Jan 2012 06:58:53 +0500
parents 92ff305e7e32
children 1c2fc3b845f2
files mod_muc_log_http/muc_log_http/mod_muc_log_http.lua
diffstat 1 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/mod_muc_log_http/muc_log_http/mod_muc_log_http.lua	Wed Jan 25 06:13:39 2012 +0500
+++ b/mod_muc_log_http/muc_log_http/mod_muc_log_http.lua	Wed Jan 25 06:58:53 2012 +0500
@@ -240,9 +240,9 @@
 	if year > 2000 then
 		year = year - 2000;
 	end
-	local bareDay = str_format("%.02d%.02d%.02d", year, month, day);
+	local bareDay = str_format("20%.02d-%.02d-%.02d", year, month, day);
 	room = urlencode(room);
-	local attributes, err = lfs.attributes(path.."/"..bareDay.."/"..room..".dat")
+	local attributes, err = lfs.attributes(path.."/"..str_format("%.02d%.02d%.02d", year, month, day).."/"..room..".dat")
 	if attributes ~= nil and attributes.mode == "file" then
 		local s = html.days.bit;
 		s = s:gsub("###BARE_DAY###", webPath .. bareDay);
@@ -446,7 +446,7 @@
 end
 
 local function incrementDay(bare_day)
-	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
+	local year, month, day = bare_day:match("^20(%d%d)-(%d%d)-(%d%d)$");
 	local leapyear = false;
 	module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
 
@@ -482,7 +482,7 @@
 	else
 		day = day + 1;
 	end
-	return strformat("%.02d%.02d%.02d", year, month, day);
+	return strformat("20%.02d-%.02d-%.02d", year, month, day);
 end
 
 local function findNextDay(bareRoomJid, bare_day)
@@ -506,7 +506,7 @@
 end
 
 local function decrementDay(bare_day)
-	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
+	local year, month, day = bare_day:match("^20(%d%d)-(%d%d)-(%d%d)$");
 	local leapyear = false;
 	module:log("debug", tostring(day).."/"..tostring(month).."/"..tostring(year))
 
@@ -540,7 +540,7 @@
 	else
 		day = day - 1;
 	end
-	return strformat("%.02d%.02d%.02d", year, month, day);
+	return strformat("20%.02d-%.02d-%.02d", year, month, day);
 end
 
 local function findPreviousDay(bareRoomJid, bare_day)
@@ -569,7 +569,7 @@
 	local day;
 	local tmp;
 	local node, host, resource = splitJid(bareRoomJid);
-	local year, month, day = bare_day:match("^(%d%d)(%d%d)(%d%d)");
+	local year, month, day = bare_day:match("^20(%d%d)-(%d%d)-(%d%d)$");
 	local previousDay = findPreviousDay(bareRoomJid, bare_day);
 	local nextDay = findNextDay(bareRoomJid, bare_day);
 	local temptime = {day=0, month=0, year=0};
@@ -587,7 +587,7 @@
 	calendar = createMonth(temptime.month, temptime.year, {callback=perDayCallback, path=path, room=node, webPath="../"}) or ""
 
 	if bare_day ~= nil then
-		local data = data_load(node, host, datastore .. "/" .. bare_day);
+		local data = data_load(node, host, datastore .. "/" .. bare_day:match("^20(.*)"):gsub("-", ""));
 		if data ~= nil then
 			for i=1, #data, 1 do
 				local stanza = lom.parse(data[i]);
@@ -664,8 +664,16 @@
 	elseif not day then -- room's listing
 		return createDoc(generateDayListSiteContentByRoom(node.."@"..host));
 	else
+		if not day:match("^20(%d%d)-(%d%d)-(%d%d)$") then
+			local y,m,d = day:match("^(%d%d)(%d%d)(%d%d)$");
+			if not y then
+				return { status = "404 Not found", body = "Unknown URL" };
+			end
+			return { status = "301 Moved Permanently",
+				headers = { ["Location"] = request.url.path:match("^/muc_log/+[^/]*/*[^/]*").."/20"..y.."-"..m.."-"..d.."/" } };
+		end
 		local room = hosts[host].modules.muc.rooms[node.."@"..host];
-		return createDoc(parseDay(node.."@"..host, room._data.subject or "", day:gsub("%-", "")));
+		return createDoc(parseDay(node.."@"..host, room._data.subject or "", day));
 	end
 end