From 2c3260d07bb3835a21af8a093d684c0a405a863e Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Wed, 23 Jul 2008 16:40:17 +0000 Subject: Renaming allow_visitor_presence to allow_visitor_status (EJAB-624). allow_visitor_status when false will strip status message tags from visitor presence broadcasts in muc rooms. SVN Revision: 1477 --- src/mod_muc/mod_muc_room.erl | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl index e221cffd..2e8fcc0b 100644 --- a/src/mod_muc/mod_muc_room.erl +++ b/src/mod_muc/mod_muc_room.erl @@ -985,25 +985,16 @@ process_presence(From, Nick, {xmlelement, "presence", Attrs, _Els} = Packet, change_nick(From, Nick, StateData) end; _NotNickChange -> - case {(StateData#state.config)#config.allow_visitor_presence, - is_visitor(From, StateData)} of - {false, true} -> - ErrText = "Visitors are not allowed to update their presence in this room", - Err = jlib:make_error_reply( - Packet, - ?ERRT_NOT_ALLOWED(Lang, ErrText)), - ejabberd_router:route( - % TODO: s/Nick/""/ - jlib:jid_replace_resource( - StateData#state.jid, - Nick), - From, Err), - StateData; - _Allowed -> - NewState = add_user_presence(From, Packet, StateData), - send_new_presence(From, NewState), - NewState - end + Stanza = case {(StateData#state.config)#config.allow_visitor_presence, + is_visitor(From, StateData)} of + {false, true} -> + strip_status(Packet); + _Allowed -> + Packet + end, + NewState = add_user_presence(From, Stanza, StateData), + send_new_presence(From, NewState), + NewState end; _ -> add_new_user(From, Nick, Packet, StateData) @@ -1388,6 +1379,13 @@ filter_presence({xmlelement, "presence", Attrs, Els}) -> end, Els), {xmlelement, "presence", Attrs, FEls}. +strip_status({xmlelement, "presence", Attrs, Els}) -> + FEls = lists:filter( + fun({xmlelement, "status", _Attrs1, _Els1}) -> + false; + (_) -> true + end, Els), + {xmlelement, "presence", Attrs, FEls}. add_user_presence(JID, Presence, StateData) -> LJID = jlib:jid_tolower(JID), -- cgit v1.2.3