diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-06-23 17:44:35 +1000 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2010-06-23 17:44:35 +1000 |
commit | 21d2f4efab1403e62f8cba6991d84fde5b814bb1 (patch) | |
tree | e8cb07db06cde2c25797be607313cc659f5b31b8 /src | |
parent | Added 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.erl | 32 |
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. |