Mercurial > prosody-modules
diff mod_http_muc_log/mod_http_muc_log.lua @ 3485:181561d0aae5
mod_http_muc_log: Add functionality for hiding joins and parts
For Guus
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 13 Mar 2019 22:47:08 +0100 |
parents | 97b8b07ae1d1 |
children | 887ce59cf396 |
line wrap: on
line diff
--- a/mod_http_muc_log/mod_http_muc_log.lua Wed Mar 13 21:15:21 2019 +0000 +++ b/mod_http_muc_log/mod_http_muc_log.lua Wed Mar 13 22:47:08 2019 +0100 @@ -5,6 +5,7 @@ local it = require"util.iterators"; local url = require"socket.url"; local os_time, os_date = os.time, os.date; +local httplib = require "util.http"; local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape); local archive = module:open_store("muc_log", "archive"); @@ -109,9 +110,19 @@ local lazy = module:get_option_boolean(module.name .. "_lazy_calendar", true); +local function hide_presence(request) + if request.url.query then + local data = httplib.formdecode(request.url.query); + if data then + return data.p == "h" + end + end + return false; +end + -- Produce the calendar view local function years_page(event, path) - local response = event.response; + local request, response = event.request, event.response; local room = nodeprep(path:match("^(.*)/$")); local is_open = open_room(room); @@ -204,6 +215,7 @@ return render(template, { title = get_room(room):get_name(); jid = get_room(room).jid; + hide_presence = hide_presence(request); years = years; links = { { href = "../", rel = "up", text = "Room list" }, @@ -213,7 +225,7 @@ -- Produce the chat log view local function logs_page(event, path) - local response = event.response; + local request, response = event.request, event.response; -- FIXME In the year, 105105, if MUC is still alive, -- if Prosody can survive... Enjoy this Y10k bug @@ -234,6 +246,7 @@ local iter, err = archive:find(room, { ["start"] = day_start; ["end"] = day_start + 86399; + ["with"] = hide_presence(request) and "message<groupchat" or nil; }); if not iter then module:log("warn", "Could not search archive: %s", err or "no error"); @@ -304,6 +317,7 @@ return render(template, { title = ("%s - %s"):format(get_room(room):get_name(), date); jid = get_room(room).jid; + hide_presence = hide_presence(request); lines = logs; links = { { href = "./", rel = "up", text = "Calendar" }, @@ -314,7 +328,7 @@ end local function list_rooms(event) - local response = event.response; + local request, response = event.request, event.response; local room_list, i = {}, 1; for room in each_room() do if not (room.get_hidden or room.is_hidden)(room) then @@ -330,6 +344,7 @@ return render(template, { title = module:get_option_string("name", "Prosody Chatrooms"); jid = module.host; + hide_presence = hide_presence(request); rooms = room_list; }); end