equal
deleted
inserted
replaced
94 end |
94 end |
95 function room_mt:is_locked() |
95 function room_mt:is_locked() |
96 return not not self.locked |
96 return not not self.locked |
97 end |
97 end |
98 |
98 |
|
99 function room_mt:route_to_occupant(o_data, stanza) |
|
100 local to = stanza.attr.to; |
|
101 for jid in pairs(o_data.sessions) do |
|
102 stanza.attr.to = jid; |
|
103 self:_route_stanza(stanza); |
|
104 end |
|
105 stanza.attr.to = to; |
|
106 end |
|
107 |
99 function room_mt:broadcast_presence(stanza, sid, code, nick) |
108 function room_mt:broadcast_presence(stanza, sid, code, nick) |
100 stanza = get_filtered_presence(stanza); |
109 stanza = get_filtered_presence(stanza); |
101 local occupant = self._occupants[stanza.attr.from]; |
110 local occupant = self._occupants[stanza.attr.from]; |
102 stanza:tag("x", {xmlns='http://jabber.org/protocol/muc#user'}) |
111 stanza:tag("x", {xmlns='http://jabber.org/protocol/muc#user'}) |
103 :tag("item", {affiliation=occupant.affiliation or "none", role=occupant.role or "none", nick=nick}):up(); |
112 :tag("item", {affiliation=occupant.affiliation or "none", role=occupant.role or "none", nick=nick}):up(); |
111 stanza.attr.to = sid; |
120 stanza.attr.to = sid; |
112 self:_route_stanza(stanza); |
121 self:_route_stanza(stanza); |
113 end |
122 end |
114 end |
123 end |
115 function room_mt:broadcast_message(stanza, historic) |
124 function room_mt:broadcast_message(stanza, historic) |
116 local to = stanza.attr.to; |
125 for occupant_jid, o_data in pairs(self._occupants) do |
117 for occupant, o_data in pairs(self._occupants) do |
126 self:route_to_occupant(o_data, stanza) |
118 for jid in pairs(o_data.sessions) do |
127 end |
119 stanza.attr.to = jid; |
|
120 self:_route_stanza(stanza); |
|
121 end |
|
122 end |
|
123 stanza.attr.to = to; |
|
124 if historic then -- add to history |
128 if historic then -- add to history |
125 return self:save_to_history(stanza) |
129 return self:save_to_history(stanza) |
126 end |
130 end |
127 end |
131 end |
128 function room_mt:save_to_history(stanza) |
132 function room_mt:save_to_history(stanza) |
658 return true; |
662 return true; |
659 end |
663 end |
660 log("debug", "%s sent private message stanza to %s (%s)", from, to, o_data.jid); |
664 log("debug", "%s sent private message stanza to %s (%s)", from, to, o_data.jid); |
661 stanza:tag("x", { xmlns = "http://jabber.org/protocol/muc#user" }):up(); |
665 stanza:tag("x", { xmlns = "http://jabber.org/protocol/muc#user" }):up(); |
662 stanza.attr.from = current_nick; |
666 stanza.attr.from = current_nick; |
663 for jid in pairs(o_data.sessions) do |
667 self:route_to_occupant(o_data, stanza) |
664 stanza.attr.to = jid; |
668 stanza.attr.from = from; |
665 self:_route_stanza(stanza); |
|
666 end |
|
667 stanza.attr.from, stanza.attr.to = from, to; |
|
668 return true; |
669 return true; |
669 end |
670 end |
670 |
671 |
671 function room_mt:send_form(origin, stanza) |
672 function room_mt:send_form(origin, stanza) |
672 origin.send(st.reply(stanza):query("http://jabber.org/protocol/muc#owner") |
673 origin.send(st.reply(stanza):query("http://jabber.org/protocol/muc#owner") |