local st = require "util.stanza";
local muc_util = module:require "muc/util";
-local valid_roles, valid_affiliations = muc_util.valid_roles, muc_util.valid_affiliations;
+local valid_affiliations = muc_util.valid_affiliations;
local function get_members_only(room)
return room._data.members_only;
as well as any remaining occupants.
]]
local occupants_changed = {};
- for nick, occupant in room:each_occupant() do
+ for _, occupant in room:each_occupant() do
local affiliation = room:get_affiliation(occupant.bare_jid);
if valid_affiliations[affiliation or "none"] <= valid_affiliations.none then
occupant.role = nil;
module:fire_event("muc-occupant-left", {room = room; nick = occupant.nick; occupant = occupant;});
end
end
- if room.save then room:save(true); end
return true;
end
label = "Make Room Members-Only?";
value = get_members_only(event.room);
});
-end);
+end, 100-6);
module:hook("muc-config-submitted/muc#roomconfig_membersonly", function(event)
if set_members_only(event.room, event.value) then
from, invitee, room.jid);
-- This might fail; ignore for now
room:set_affiliation(from, invitee, "member", "Invited by " .. from);
+ room:save();
end
end
end);