Diff

plugins/muc/mod_muc.lua @ 6179:e488a90195bc

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.
author daurnimator <quae@daurnimator.com>
date Thu, 27 Mar 2014 19:16:13 -0400
parent 6141:bf6de8ef66c2
child 6205:49dd381666f3
line wrap: on
line diff
--- a/plugins/muc/mod_muc.lua	Thu Mar 27 19:16:46 2014 -0400
+++ b/plugins/muc/mod_muc.lua	Thu Mar 27 19:16:13 2014 -0400
@@ -228,27 +228,14 @@
 	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;