aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/muc/mod_muc.lua
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2014-03-27 19:16:13 -0400
committerdaurnimator <quae@daurnimator.com>2014-03-27 19:16:13 -0400
commit31edf036e67ab716cb51657ef8dff9abbe8b28ed (patch)
tree4cf3f1a07076f3bf18441b2154cfe94317dba2b8 /plugins/muc/mod_muc.lua
parent8cf7b85bbb8bdc3b7bd673267fc1e5e775f45d88 (diff)
downloadprosody-31edf036e67ab716cb51657ef8dff9abbe8b28ed.tar.gz
prosody-31edf036e67ab716cb51657ef8dff9abbe8b28ed.zip
plugins/muc: Massive refactor
We now have occupant objects; you grab them, modify them, save them. New presence handling code. Modify all presence sending to go via new functions.
Diffstat (limited to 'plugins/muc/mod_muc.lua')
-rw-r--r--plugins/muc/mod_muc.lua19
1 files changed, 3 insertions, 16 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua
index 8759cba4..a8a6388d 100644
--- a/plugins/muc/mod_muc.lua
+++ b/plugins/muc/mod_muc.lua
@@ -228,27 +228,14 @@ module.restore = function(data)
hosts[module:get_host()].muc = { rooms = rooms };
end
-function shutdown_room(room, stanza)
- for nick, occupant in pairs(room._occupants) do
- stanza.attr.from = nick;
- for jid in pairs(occupant.sessions) do
- stanza.attr.to = jid;
- room:_route_stanza(stanza);
- room._jid_nick[jid] = nil;
- end
- room._occupants[nick] = nil;
- end
-end
function shutdown_component()
if not saved then
- local stanza = st.presence({type = "unavailable"})
- :tag("x", {xmlns = "http://jabber.org/protocol/muc#user"})
- :tag("item", { affiliation='none', role='none' }):up()
+ local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"})
:tag("status", { code = "332"}):up();
for roomjid, room in pairs(rooms) do
- shutdown_room(room, stanza);
+ room:clear(x);
end
- shutdown_room(host_room, stanza);
+ host_room:clear(x);
end
end
module.unload = shutdown_component;