MUC: Assign priorities to config form hooks so they have a consistent order on each...
[prosody.git] / plugins / muc / members_only.lib.lua
index 5e29a68d9eba821916d7f23e78212ec55457ec73..1e5e6a56656500bb37c07011eecd21296adf6627 100644 (file)
@@ -10,7 +10,7 @@
 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;
@@ -29,7 +29,7 @@ local function set_members_only(room, 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;
@@ -44,7 +44,6 @@ local function set_members_only(room, members_only)
                        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
 
@@ -59,7 +58,7 @@ module:hook("muc-config-form", function(event)
                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
@@ -118,6 +117,7 @@ module:hook("muc-invite", function(event)
                                from, invitee, room.jid);
                        -- This might fail; ignore for now
                        room:set_affiliation(from, invitee, "member", "Invited by " .. from);
+                       room:save();
                end
        end
 end);