File

plugins/mod_offline.lua @ 9830:d935a0f0de24

MUC: Factor out role change permission check into its own method I would like to invert this logic so that it checks if the role change is allowed instead of checking if it is not allowed as it does now, in order to make it easier to understand.
author Kim Alvefur <zash@zash.se>
date Sun, 24 Feb 2019 16:18:30 +0100
parent 8030:bd3527198308
child 10242:7e5d2a6c9390
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2009 Matthew Wild
-- Copyright (C) 2008-2009 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--


local datetime = require "util.datetime";
local jid_split = require "util.jid".split;

local offline_messages = module:open_store("offline", "archive");

module:add_feature("msgoffline");

module:hook("message/offline/handle", function(event)
	local origin, stanza = event.origin, event.stanza;
	local to = stanza.attr.to;
	local node;
	if to then
		node = jid_split(to)
	else
		node = origin.username;
	end

	return offline_messages:append(node, nil, stanza, os.time(), "");
end, -1);

module:hook("message/offline/broadcast", function(event)
	local origin = event.origin;

	local node, host = origin.username, origin.host;

	local data = offline_messages:find(node);
	if not data then return true; end
	for _, stanza, when in data do
		stanza:tag("delay", {xmlns = "urn:xmpp:delay", from = host, stamp = datetime.datetime(when)}):up(); -- XEP-0203
		origin.send(stanza);
	end
	offline_messages:delete(node);
	return true;
end, -1);