Mercurial > prosody-hg
comparison plugins/muc/muc.lib.lua @ 6185:d4a8840e72f9
plugins/muc/muc.lib: Fix anonymous check in `send_occupant_list`
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Fri, 28 Mar 2014 13:34:46 -0400 |
| parents | 2bfc4b12ec8f |
| children | 85f7cd91dc31 |
comparison
equal
deleted
inserted
replaced
| 6184:2bfc4b12ec8f | 6185:d4a8840e72f9 |
|---|---|
| 271 end | 271 end |
| 272 end | 272 end |
| 273 end | 273 end |
| 274 | 274 |
| 275 function room_mt:send_occupant_list(to, filter) | 275 function room_mt:send_occupant_list(to, filter) |
| 276 local to_occupant = self:get_occupant_by_real_jid(to); | 276 local to_bare = jid_bare(to); |
| 277 local has_anonymous = self:get_whois() ~= "anyone" | 277 local is_anonymous = true; |
| 278 if self:get_whois() ~= "anyone" then | |
| 279 local affiliation = self:get_affiliation(to); | |
| 280 if affiliation ~= "admin" and affiliation ~= "owner" then | |
| 281 local occupant = self:get_occupant_by_real_jid(to); | |
| 282 if not occupant or occupant.role ~= "moderator" then | |
| 283 is_anonymous = false; | |
| 284 end | |
| 285 end | |
| 286 end | |
| 278 for occupant_jid, occupant in self:each_occupant() do | 287 for occupant_jid, occupant in self:each_occupant() do |
| 279 if filter == nil or filter(occupant_jid, occupant) then | 288 if filter == nil or filter(occupant_jid, occupant) then |
| 280 local x = st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'}); | 289 local x = st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'}); |
| 281 local is_anonymous = has_anonymous and occupant.role ~= "moderator" and to_occupant.bare_jid ~= occupant.bare_jid; | 290 self:build_item_list(occupant, x, is_anonymous and to_bare ~= occupant.bare_jid); -- can always see your own jids |
| 282 self:build_item_list(occupant, x, is_anonymous); | |
| 283 local pres = st.clone(occupant:get_presence()); | 291 local pres = st.clone(occupant:get_presence()); |
| 284 pres.attr.to = to; | 292 pres.attr.to = to; |
| 285 pres:add_child(x); | 293 pres:add_child(x); |
| 286 self:route_stanza(pres); | 294 self:route_stanza(pres); |
| 287 end | 295 end |
