plugins/muc/muc.lib.lua
changeset 5612 5404832d6f7a
parent 5611 e043d4d65423
child 5613 f3166adab512
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;