diff options
author | daurnimator <quae@daurnimator.com> | 2014-03-27 19:16:13 -0400 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2014-03-27 19:16:13 -0400 |
commit | 31edf036e67ab716cb51657ef8dff9abbe8b28ed (patch) | |
tree | 4cf3f1a07076f3bf18441b2154cfe94317dba2b8 /plugins/muc/mod_muc.lua | |
parent | 8cf7b85bbb8bdc3b7bd673267fc1e5e775f45d88 (diff) | |
download | prosody-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.lua | 19 |
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; |