Mercurial > prosody-hg
comparison plugins/muc/muc.lib.lua @ 5612:5404832d6f7a
mod_muc: Use stanza:maptags() instead of custom filtering functions, 7 insertions, 19 deletions!
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 21 May 2013 09:57:36 +0100 |
| parents | e043d4d65423 |
| children | f3166adab512 |
comparison
equal
deleted
inserted
replaced
| 5611:e043d4d65423 | 5612:5404832d6f7a |
|---|---|
| 25 | 25 |
| 26 local muc_domain = nil; --module:get_host(); | 26 local muc_domain = nil; --module:get_host(); |
| 27 local default_history_length, max_history_length = 20, math.huge; | 27 local default_history_length, max_history_length = 20, math.huge; |
| 28 | 28 |
| 29 ------------ | 29 ------------ |
| 30 local function filter_xmlns_from_array(array, filters) | |
| 31 local count = 0; | |
| 32 for i=#array,1,-1 do | |
| 33 local attr = array[i].attr; | |
| 34 if filters[attr and attr.xmlns] then | |
| 35 t_remove(array, i); | |
| 36 count = count + 1; | |
| 37 end | |
| 38 end | |
| 39 return count; | |
| 40 end | |
| 41 local function filter_xmlns_from_stanza(stanza, filters) | |
| 42 if filters then | |
| 43 if filter_xmlns_from_array(stanza.tags, filters) ~= 0 then | |
| 44 return stanza, filter_xmlns_from_array(stanza, filters); | |
| 45 end | |
| 46 end | |
| 47 return stanza, 0; | |
| 48 end | |
| 49 local presence_filters = {["http://jabber.org/protocol/muc"]=true;["http://jabber.org/protocol/muc#user"]=true}; | 30 local presence_filters = {["http://jabber.org/protocol/muc"]=true;["http://jabber.org/protocol/muc#user"]=true}; |
| 31 local function presence_filter(tag) | |
| 32 if presence_filters[tag.attr.xmlns] then | |
| 33 return nil; | |
| 34 end | |
| 35 return tag; | |
| 36 end | |
| 37 | |
| 50 local function get_filtered_presence(stanza) | 38 local function get_filtered_presence(stanza) |
| 51 return filter_xmlns_from_stanza(st.clone(stanza):reset(), presence_filters); | 39 return st.clone(stanza):maptags(presence_filter); |
| 52 end | 40 end |
| 53 local kickable_error_conditions = { | 41 local kickable_error_conditions = { |
| 54 ["gone"] = true; | 42 ["gone"] = true; |
| 55 ["internal-server-error"] = true; | 43 ["internal-server-error"] = true; |
| 56 ["item-not-found"] = true; | 44 ["item-not-found"] = true; |
