aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-06-23 17:44:35 +1000
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2010-06-23 17:44:35 +1000
commit21d2f4efab1403e62f8cba6991d84fde5b814bb1 (patch)
treee8cb07db06cde2c25797be607313cc659f5b31b8 /src
parentAdded support for all hash functions required by XEP-0115 (diff)
now admins are able to see private rooms in disco (EJAB-1269)
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc/mod_muc_room.erl32
1 files changed, 12 insertions, 20 deletions
diff --git a/src/mod_muc/mod_muc_room.erl b/src/mod_muc/mod_muc_room.erl
index b20e4cabd..8798ace2d 100644
--- a/src/mod_muc/mod_muc_room.erl
+++ b/src/mod_muc/mod_muc_room.erl
@@ -593,21 +593,9 @@ handle_event(_Event, StateName, StateData) ->
%% {stop, Reason, Reply, NewStateData}
%%----------------------------------------------------------------------
handle_sync_event({get_disco_item, JID, Lang}, _From, StateName, StateData) ->
- case (StateData#state.config)#config.public_list of
- true ->
- Reply = get_roomdesc_reply(StateData,
- get_roomdesc_tail(StateData, Lang)),
- {reply, Reply, StateName, StateData};
- _ ->
- case is_occupant_or_admin(JID, StateData) of
- true ->
- Reply = get_roomdesc_reply(StateData, get_roomdesc_tail(
- StateData, Lang)),
- {reply, Reply, StateName, StateData};
- _ ->
- {reply, false, StateName, StateData}
- end
- end;
+ Reply = get_roomdesc_reply(JID, StateData,
+ get_roomdesc_tail(StateData, Lang)),
+ {reply, Reply, StateName, StateData};
handle_sync_event(get_config, _From, StateName, StateData) ->
{reply, {ok, StateData#state.config}, StateName, StateData};
handle_sync_event(get_state, _From, StateName, StateData) ->
@@ -3357,11 +3345,15 @@ get_title(StateData) ->
Name
end.
-get_roomdesc_reply(StateData, Tail) ->
- case ((StateData#state.config)#config.public == true) of
- true ->
- {item, get_title(StateData) ++ Tail};
- _ ->
+get_roomdesc_reply(JID, StateData, Tail) ->
+ IsOccupantOrAdmin = is_occupant_or_admin(JID, StateData),
+ if (StateData#state.config)#config.public or IsOccupantOrAdmin ->
+ if (StateData#state.config)#config.public_list or IsOccupantOrAdmin ->
+ {item, get_title(StateData) ++ Tail};
+ true ->
+ {item, get_title(StateData)}
+ end;
+ true ->
false
end.