mod_pep: Wipe pubsub service on user deletion
Data is already wiped from storage, but this ensures everything is
properly unsubscribed, possibly with notifications etc.
Clears recipient cache as well, since it is no longer relevant.
-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
-- Copyright (C) 2014 Daurnimator
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
local function get_moderated(room)
return room._data.moderated;
end
local function set_moderated(room, moderated)
moderated = moderated and true or nil;
if get_moderated(room) == moderated then return false; end
room._data.moderated = moderated;
return true;
end
module:hook("muc-disco#info", function(event)
event.reply:tag("feature", {var = get_moderated(event.room) and "muc_moderated" or "muc_unmoderated"}):up();
end);
module:hook("muc-config-form", function(event)
table.insert(event.form, {
name = "muc#roomconfig_moderatedroom";
type = "boolean";
label = "Moderated (require permission to speak)";
desc = "In moderated rooms occupants must be given permission to speak by a room moderator";
value = get_moderated(event.room);
});
end, 80-3);
module:hook("muc-config-submitted/muc#roomconfig_moderatedroom", function(event)
if set_moderated(event.room, event.value) then
event.status_codes["104"] = true;
end
end);
module:hook("muc-get-default-role", function(event)
if event.affiliation == nil then
if get_moderated(event.room) then
-- XEP-0045:
-- An implementation MAY grant voice by default to visitors in unmoderated rooms.
return "visitor"
end
end
end, 1);
return {
get = get_moderated;
set = set_moderated;
};