# HG changeset patch # User Waqas Hussain # Date 1241728042 -18000 # Node ID ed4d43c3eaf2fc3c37825cb3befdbc2cefa1030b # Parent 0310a0f5ce3a0a0318c5803e969f3a067acd8ce1 mod_muc: Extracted sending of occupant list into its own function diff -r 0310a0f5ce3a -r ed4d43c3eaf2 plugins/mod_muc.lua --- a/plugins/mod_muc.lua Fri May 08 01:14:01 2009 +0500 +++ b/plugins/mod_muc.lua Fri May 08 01:27:22 2009 +0500 @@ -218,6 +218,21 @@ core_route_stanza(component, st.message({type='groupchat', from=room, to=to}):tag("subject"):text(rooms_info:get(room, 'subject'))); end end +function send_occupant_list(room, to) + local r = rooms:get(room); + if r then + local current_nick = jid_nick:get(to, room); + for occupant, o_data in pairs(r) do + if occupant ~= current_nick then + local pres = get_filtered_presence(o_data.sessions[o_data.jid]); + pres.attr.to, pres.attr.from = to, occupant; + pres:tag("x", {xmlns='http://jabber.org/protocol/muc#user'}) + :tag("item", {affiliation=o_data.affiliation, role=o_data.role}):up(); + core_route_stanza(component, pres); + end + end + end +end function handle_to_occupant(origin, stanza) -- PM, vCards, etc local from, to = stanza.attr.from, stanza.attr.to; @@ -297,18 +312,7 @@ end rooms:set(room, to, data); jid_nick:set(from, room, to); - local r = rooms:get(room); - if r then - for occupant, o_data in pairs(r) do - if occupant ~= to then - local pres = get_filtered_presence(o_data.sessions[o_data.jid]); - pres.attr.to, pres.attr.from = from, occupant; - pres:tag("x", {xmlns='http://jabber.org/protocol/muc#user'}) - :tag("item", {affiliation=o_data.affiliation, role=o_data.role}):up(); - core_route_stanza(component, pres); - end - end - end + send_occupant_list(room, from); pr.attr.from = to; broadcast_presence_stanza(room, pr); broadcast_history(room, from);