diff options
Diffstat (limited to 'src/mod_muc_admin.erl')
-rw-r--r-- | src/mod_muc_admin.erl | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/mod_muc_admin.erl b/src/mod_muc_admin.erl index 7b702cdc5..23d821642 100644 --- a/src/mod_muc_admin.erl +++ b/src/mod_muc_admin.erl @@ -263,9 +263,9 @@ get_commands_spec() -> #ejabberd_commands{name = subscribe_room, tags = [muc_room], desc = "Subscribe to a MUC conference", module = ?MODULE, function = subscribe_room, - args_desc = ["Full JID, including some resource", "a user's nick", + args_desc = ["User JID", "a user's nick", "the room to subscribe", "nodes separated by commas: ,"], - args_example = ["tom@localhost/dummy", "Tom", "room1@conference.localhost", + args_example = ["tom@localhost", "Tom", "room1@conference.localhost", "urn:xmpp:mucsub:nodes:messages,urn:xmpp:mucsub:nodes:affiliations"], result_desc = "The list of nodes that has subscribed", result_example = ["urn:xmpp:mucsub:nodes:messages", @@ -357,11 +357,11 @@ build_summary_room(Name, Host, Pid) -> C = get_room_config(Pid), Public = C#config.public, S = get_room_state(Pid), - Participants = dict:size(S#state.users), + Participants = maps:size(S#state.users), {<<Name/binary, "@", Host/binary>>, misc:atom_to_binary(Public), Participants - }. + }. muc_register_nick(Nick, FromBinary, ServerHost) -> Host = find_host(ServerHost), @@ -523,7 +523,7 @@ build_info_room({Name, Host, Pid}) -> S = get_room_state(Pid), Just_created = S#state.just_created, - Num_participants = length(dict:fetch_keys(S#state.users)), + Num_participants = maps:size(S#state.users), History = (S#state.history)#lqueue.queue, Ts_last_message = @@ -778,7 +778,7 @@ decide_room({_Room_name, _Host, Room_pid}, Last_allowed) -> Just_created = S#state.just_created, Room_users = S#state.users, - Num_users = length(?DICT:to_list(Room_users)), + Num_users = maps:size(Room_users), History = (S#state.history)#lqueue.queue, Ts_now = calendar:universal_time(), @@ -854,7 +854,7 @@ get_room_occupants(Pid) -> Info#user.nick, atom_to_list(Info#user.role)} end, - dict:to_list(S#state.users)). + maps:to_list(S#state.users)). get_room_occupants_number(Room, Host) -> case get_room_pid(Room, Host) of @@ -862,7 +862,7 @@ get_room_occupants_number(Room, Host) -> throw({error, room_not_found}); Pid -> S = get_room_state(Pid), - dict:size(S#state.users) + maps:size(S#state.users) end. %%---------------------------- @@ -950,6 +950,13 @@ format_room_option(OptionString, ValueString) -> subject_author ->ValueString; presence_broadcast ->misc:expr_to_term(ValueString); max_users -> binary_to_integer(ValueString); + voice_request_min_interval -> binary_to_integer(ValueString); + vcard -> ValueString; + vcard_xupdate when ValueString /= <<"undefined">>, + ValueString /= <<"external">> -> + ValueString; + lang -> ValueString; + pubsub -> ValueString; _ -> misc:binary_to_atom(ValueString) end, {Option, Value}. @@ -1032,7 +1039,7 @@ get_room_affiliations(Name, Service) -> {ok, Pid} -> %% Get the PID of the online room, then request its state {ok, StateData} = p1_fsm:sync_send_all_state_event(Pid, get_state), - Affiliations = ?DICT:to_list(StateData#state.affiliations), + Affiliations = maps:to_list(StateData#state.affiliations), lists:map( fun({{Uname, Domain, _Res}, {Aff, Reason}}) when is_atom(Aff)-> {Uname, Domain, Aff, Reason}; @@ -1097,9 +1104,8 @@ subscribe_room(User, Nick, Room, Nodes) -> try jid:decode(Room) of #jid{luser = Name, lserver = Host} when Name /= <<"">> -> try jid:decode(User) of - #jid{lresource = <<"">>} -> - throw({error, "User's JID should have a resource"}); - UserJID -> + UserJID1 -> + UserJID = jid:replace_resource(UserJID1, <<"modmucadmin">>), case get_room_pid(Name, Host) of Pid when is_pid(Pid) -> case p1_fsm:sync_send_all_state_event( @@ -1166,7 +1172,7 @@ get_config_opt_name(Pos) -> {get_config_opt_name(Opt), element(Opt, Config)}). make_opts(StateData) -> Config = StateData#state.config, - Subscribers = (?DICT):fold( + Subscribers = maps:fold( fun(_LJID, Sub, Acc) -> [{Sub#subscriber.jid, Sub#subscriber.nick, @@ -1198,7 +1204,7 @@ make_opts(StateData) -> {captcha_whitelist, (?SETS):to_list((StateData#state.config)#config.captcha_whitelist)}, {affiliations, - (?DICT):to_list(StateData#state.affiliations)}, + maps:to_list(StateData#state.affiliations)}, {subject, StateData#state.subject}, {subject_author, StateData#state.subject_author}, {subscribers, Subscribers}]. |