Comparison

mod_http_muc_log/mod_http_muc_log.lua @ 3703:7244ff1d62a8

mod_http_muc_log: Expose xml:lang from each message/body #a11y Individual messages may be in a different language than the main language of the room.
author Kim Alvefur <zash@zash.se>
date Wed, 09 Oct 2019 21:35:13 +0200
parent 3702:caf27826c7b2
child 3714:04ff0de40ba9
comparison
equal deleted inserted replaced
3702:caf27826c7b2 3703:7244ff1d62a8
292 return 500; 292 return 500;
293 end 293 end
294 294
295 local first, last; 295 local first, last;
296 for key, item, when in iter do 296 for key, item, when in iter do
297 local body = item:get_child_text("body"); 297 local body_tag = item:get_child("body");
298 local body = body_tag and body_tag:get_text();
298 local subject = item:get_child_text("subject"); 299 local subject = item:get_child_text("subject");
299 local verb = nil; 300 local verb = nil;
301 local lang = body_tag and body_tag.attr["xml:lang"] or item.attr["xml:lang"];
300 if subject then 302 if subject then
301 verb, body = "set the topic to", subject; 303 verb, body = "set the topic to", subject;
302 elseif body and body:sub(1,4) == "/me " then 304 elseif body and body:sub(1,4) == "/me " then
303 verb, body = body:sub(5), nil; 305 verb, body = body:sub(5), nil;
304 elseif item.name == "presence" then 306 elseif item.name == "presence" then
305 -- TODO Distinguish between join and presence update 307 -- TODO Distinguish between join and presence update
306 verb = item.attr.type == "unavailable" and "has left" or "has joined"; 308 verb = item.attr.type == "unavailable" and "has left" or "has joined";
309 lang = "en";
307 end 310 end
308 local oob = use_oob and item:get_child("x", "jabber:x:oob"); 311 local oob = use_oob and item:get_child("x", "jabber:x:oob");
309 if body or verb or oob then 312 if body or verb or oob then
310 local line = { 313 local line = {
311 key = key; 314 key = key;
312 datetime = datetime.datetime(when); 315 datetime = datetime.datetime(when);
313 time = datetime.time(when); 316 time = datetime.time(when);
314 verb = verb; 317 verb = verb;
315 body = body; 318 body = body;
319 lang = lang;
316 nick = select(3, jid_split(item.attr.from)); 320 nick = select(3, jid_split(item.attr.from));
317 st_name = item.name; 321 st_name = item.name;
318 st_type = item.attr.type; 322 st_type = item.attr.type;
319 }; 323 };
320 if oob then 324 if oob then