mod_http_muc_log/mod_http_muc_log.lua
changeset 1577 0a6974f2cb55
parent 1576 91b91052e0e8
child 1578 a68ec7a2dc02
equal deleted inserted replaced
1576:91b91052e0e8 1577:0a6974f2cb55
   262 		["end"]   = datetime.parse(date.."T23:59:59Z");
   262 		["end"]   = datetime.parse(date.."T23:59:59Z");
   263 		-- with = "message<groupchat";
   263 		-- with = "message<groupchat";
   264 	});
   264 	});
   265 	if not iter then return 500; end
   265 	if not iter then return 500; end
   266 
   266 
       
   267 	local first, last;
   267 	local verb, subject, body;
   268 	local verb, subject, body;
   268 	for key, item, when in iter do
   269 	for key, item, when in iter do
   269 		body = item:get_child_text("body");
   270 		body = item:get_child_text("body");
   270 		subject = item:get_child_text("subject");
   271 		subject = item:get_child_text("subject");
   271 		verb = nil;
   272 		verb = nil;
   284 			body = subject or body;
   285 			body = subject or body;
   285 			nick = select(3, jid_split(item.attr.from));
   286 			nick = select(3, jid_split(item.attr.from));
   286 			st_name = item.name;
   287 			st_name = item.name;
   287 			st_type = item.attr.type;
   288 			st_type = item.attr.type;
   288 		}, i + 1;
   289 		}, i + 1;
   289 	end
   290 		first = first or key;
       
   291 		last = key;
       
   292 	end
       
   293 	if i == 1 then return end -- No items
   290 
   294 
   291 	local next_when = "";
   295 	local next_when = "";
   292 	local prev_when = "";
   296 	local prev_when = "";
   293 
   297 
   294 	module:log("debug", "Find next date with messages");
   298 	module:log("debug", "Find next date with messages");
   295 	for key, message, when in archive:find(room, {
   299 	for key, message, when in archive:find(room, {
   296 		["start"] = datetime.parse(date.."T00:00:00Z") + 86400;
   300 		after = last;
       
   301 		limit = 1;
   297 	}) do
   302 	}) do
   298 		next_when = datetime.date(when);
   303 		next_when = datetime.date(when);
   299 		module:log("debug", "Next message: %s", datetime.datetime(when));
   304 		module:log("debug", "Next message: %s", datetime.datetime(when));
   300 		break;
       
   301 	end
   305 	end
   302 
   306 
   303 	module:log("debug", "Find prev date with messages");
   307 	module:log("debug", "Find prev date with messages");
   304 	for key, message, when in archive:find(room, {
   308 	for key, message, when in archive:find(room, {
   305 		["end"] = datetime.parse(date.."T00:00:00Z") - 1;
   309 		before = first;
       
   310 		limit = 1;
   306 		reverse = true;
   311 		reverse = true;
   307 	}) do
   312 	}) do
   308 		prev_when = datetime.date(when);
   313 		prev_when = datetime.date(when);
   309 		module:log("debug", "Previous message: %s", datetime.datetime(when));
   314 		module:log("debug", "Previous message: %s", datetime.datetime(when));
   310 		break;
       
   311 	end
   315 	end
   312 
   316 
   313 	response.headers.content_type = "text/html";
   317 	response.headers.content_type = "text/html";
   314 	return page_template{
   318 	return page_template{
   315 		canonical = module:http_url() .. "/" .. path;
   319 		canonical = module:http_url() .. "/" .. path;