aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/muc/mod_muc.lua
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2014-04-30 13:12:32 -0400
committerdaurnimator <quae@daurnimator.com>2014-04-30 13:12:32 -0400
commit2c6ed6291abaae98e7afcf8f27ef16f013215c48 (patch)
tree2284d904c23552e1fd2b3bb848217cb732ee02b2 /plugins/muc/mod_muc.lua
parent63e9b9a510218fe91990a3fcaf1e62b74415c409 (diff)
downloadprosody-2c6ed6291abaae98e7afcf8f27ef16f013215c48.tar.gz
prosody-2c6ed6291abaae98e7afcf8f27ef16f013215c48.zip
plugins/muc/mod_muc.lua: Add "each_room" function to iterate over rooms (instead of accessing directly)
Diffstat (limited to 'plugins/muc/mod_muc.lua')
-rw-r--r--plugins/muc/mod_muc.lua14
1 files changed, 9 insertions, 5 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua
index 519b1e34..5ad86025 100644
--- a/plugins/muc/mod_muc.lua
+++ b/plugins/muc/mod_muc.lua
@@ -14,6 +14,7 @@ end
local muclib = module:require "muc";
room_mt = muclib.room_mt; -- Yes, global.
+local iterators = require "util.iterators";
local jid_split = require "util.jid".split;
local jid_bare = require "util.jid".bare;
local st = require "util.stanza";
@@ -59,6 +60,10 @@ function get_room_from_jid(room_jid)
return rooms[room_jid]
end
+function each_room()
+ return iterators.values(rooms);
+end
+
do -- Persistent rooms
local persistent = module:require "muc/persistent";
local persistent_rooms_storage = module:open_store("persistent");
@@ -122,9 +127,9 @@ end
module:hook("host-disco-items", function(event)
local reply = event.reply;
module:log("debug", "host-disco-items called");
- for jid, room in pairs(rooms) do
+ for room in each_room() do
if not room:get_hidden() then
- reply:tag("item", {jid=jid, name=room:get_name()}):up();
+ reply:tag("item", {jid=room.jid, name=room:get_name()}):up();
end
end
end);
@@ -202,7 +207,7 @@ end
function shutdown_component()
local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"})
:tag("status", { code = "332"}):up();
- for roomjid, room in pairs(rooms) do
+ for room in each_room() do
room:clear(x);
end
end
@@ -211,7 +216,6 @@ module:hook_global("server-stopping", shutdown_component);
-- Ad-hoc commands
module:depends("adhoc")
local t_concat = table.concat;
-local keys = require "util.iterators".keys;
local adhoc_new = module:require "adhoc".new;
local adhoc_initial = require "util.adhoc".new_initial_data_form;
local dataforms_new = require "util.dataforms".new;
@@ -225,7 +229,7 @@ local destroy_rooms_layout = dataforms_new {
};
local destroy_rooms_handler = adhoc_initial(destroy_rooms_layout, function()
- return { rooms = array.collect(keys(rooms)):sort() };
+ return { rooms = array.collect(each_room):pluck("jid"):sort(); };
end, function(fields, errors)
if errors then
local errmsg = {};