Mercurial > prosody-hg
comparison plugins/muc/muc.lib.lua @ 6140:e4cdb3e5d7d0
plugins/muc/muc.lib: Add :broadcast method; use it from :broadcast_except_nick and :broadcast_message
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Mon, 24 Mar 2014 16:32:18 -0400 |
| parents | 544f75256883 |
| children | bf6de8ef66c2 |
comparison
equal
deleted
inserted
replaced
| 6139:544f75256883 | 6140:e4cdb3e5d7d0 |
|---|---|
| 118 stanza.attr.to = sid; | 118 stanza.attr.to = sid; |
| 119 self:_route_stanza(stanza); | 119 self:_route_stanza(stanza); |
| 120 end | 120 end |
| 121 function room_mt:broadcast_message(stanza, historic) | 121 function room_mt:broadcast_message(stanza, historic) |
| 122 module:fire_event("muc-broadcast-message", {room = self, stanza = stanza, historic = historic}); | 122 module:fire_event("muc-broadcast-message", {room = self, stanza = stanza, historic = historic}); |
| 123 for occupant_jid, o_data in pairs(self._occupants) do | 123 self:broadcast(stanza); |
| 124 self:route_to_occupant(o_data, stanza) | |
| 125 end | |
| 126 end | 124 end |
| 127 | 125 |
| 128 -- add to history | 126 -- add to history |
| 129 module:hook("muc-broadcast-message", function(event) | 127 module:hook("muc-broadcast-message", function(event) |
| 130 if event.historic then | 128 if event.historic then |
| 141 while #history > room:get_historylength() do t_remove(history, 1) end | 139 while #history > room:get_historylength() do t_remove(history, 1) end |
| 142 end | 140 end |
| 143 end) | 141 end) |
| 144 | 142 |
| 145 function room_mt:broadcast_except_nick(stanza, nick) | 143 function room_mt:broadcast_except_nick(stanza, nick) |
| 146 for rnick, occupant in pairs(self._occupants) do | 144 return self:broadcast(stanza, function(rnick, occupant) return rnick ~= nick end) |
| 147 if rnick ~= nick then | 145 end |
| 146 | |
| 147 -- Broadcast a stanza to all occupants in the room. | |
| 148 -- optionally checks conditional called with nicl | |
| 149 function room_mt:broadcast(stanza, cond_func) | |
| 150 for nick, occupant in pairs(self._occupants) do | |
| 151 if cond_func == nil or cond_func(nick, occupant) then | |
| 148 self:route_to_occupant(occupant, stanza) | 152 self:route_to_occupant(occupant, stanza) |
| 149 end | 153 end |
| 150 end | 154 end |
| 151 end | 155 end |
| 152 | 156 |
