# HG changeset patch # User daurnimator # Date 1395693138 14400 # Node ID e4cdb3e5d7d0b03a9bbed2209958dd1fc0d6e9f3 # Parent 544f75256883ca6f8968720df198ec92fb6ac88a plugins/muc/muc.lib: Add :broadcast method; use it from :broadcast_except_nick and :broadcast_message diff -r 544f75256883 -r e4cdb3e5d7d0 plugins/muc/muc.lib.lua --- a/plugins/muc/muc.lib.lua Mon Mar 24 13:36:43 2014 -0400 +++ b/plugins/muc/muc.lib.lua Mon Mar 24 16:32:18 2014 -0400 @@ -120,9 +120,7 @@ end function room_mt:broadcast_message(stanza, historic) module:fire_event("muc-broadcast-message", {room = self, stanza = stanza, historic = historic}); - for occupant_jid, o_data in pairs(self._occupants) do - self:route_to_occupant(o_data, stanza) - end + self:broadcast(stanza); end -- add to history @@ -143,8 +141,14 @@ end) function room_mt:broadcast_except_nick(stanza, nick) - for rnick, occupant in pairs(self._occupants) do - if rnick ~= nick then + return self:broadcast(stanza, function(rnick, occupant) return rnick ~= nick end) +end + +-- Broadcast a stanza to all occupants in the room. +-- optionally checks conditional called with nicl +function room_mt:broadcast(stanza, cond_func) + for nick, occupant in pairs(self._occupants) do + if cond_func == nil or cond_func(nick, occupant) then self:route_to_occupant(occupant, stanza) end end