mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-22 17:28:25 +01:00
Simplify updating disk room options in set_room_affiliation
This commit is contained in:
parent
d34227cae1
commit
5f9d480f6a
@ -1234,9 +1234,14 @@ set_room_affiliation(Name, Service, JID, AffiliationString) ->
|
|||||||
case get_room_pid(Name, Service) of
|
case get_room_pid(Name, Service) of
|
||||||
Pid when is_pid(Pid) ->
|
Pid when is_pid(Pid) ->
|
||||||
%% Get the PID for the online room so we can get the state of the room
|
%% Get the PID for the online room so we can get the state of the room
|
||||||
{ok, StateData} = mod_muc_room:change_item(Pid, jid:decode(JID), affiliation, Affiliation, <<"">>),
|
case mod_muc_room:change_item(Pid, jid:decode(JID), affiliation, Affiliation, <<"">>) of
|
||||||
mod_muc:store_room(StateData#state.server_host, StateData#state.host, StateData#state.room, make_opts(StateData)),
|
{ok, _} ->
|
||||||
ok;
|
ok;
|
||||||
|
{error, not_found} ->
|
||||||
|
throw({error, "Room doesn't exists"});
|
||||||
|
{error, _} ->
|
||||||
|
throw({error, "Unable to perform change"})
|
||||||
|
end;
|
||||||
room_not_found ->
|
room_not_found ->
|
||||||
throw({error, "Room doesn't exists"});
|
throw({error, "Room doesn't exists"});
|
||||||
invalid_service ->
|
invalid_service ->
|
||||||
@ -1311,52 +1316,6 @@ get_subscribers(Name, Host) ->
|
|||||||
throw({error, "The room does not exist"})
|
throw({error, "The room does not exist"})
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%% Copied from mod_muc_room.erl
|
|
||||||
get_config_opt_name(Pos) ->
|
|
||||||
Fs = [config|record_info(fields, config)],
|
|
||||||
lists:nth(Pos, Fs).
|
|
||||||
-define(MAKE_CONFIG_OPT(Opt),
|
|
||||||
{get_config_opt_name(Opt), element(Opt, Config)}).
|
|
||||||
make_opts(StateData) ->
|
|
||||||
Config = StateData#state.config,
|
|
||||||
Subscribers = maps:fold(
|
|
||||||
fun(_LJID, Sub, Acc) ->
|
|
||||||
[{Sub#subscriber.jid,
|
|
||||||
Sub#subscriber.nick,
|
|
||||||
Sub#subscriber.nodes}|Acc]
|
|
||||||
end, [], StateData#state.subscribers),
|
|
||||||
[?MAKE_CONFIG_OPT(#config.title), ?MAKE_CONFIG_OPT(#config.description),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_change_subj),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_query_users),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_private_messages),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_private_messages_from_visitors),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_visitor_status),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_visitor_nickchange),
|
|
||||||
?MAKE_CONFIG_OPT(#config.public), ?MAKE_CONFIG_OPT(#config.public_list),
|
|
||||||
?MAKE_CONFIG_OPT(#config.persistent),
|
|
||||||
?MAKE_CONFIG_OPT(#config.moderated),
|
|
||||||
?MAKE_CONFIG_OPT(#config.members_by_default),
|
|
||||||
?MAKE_CONFIG_OPT(#config.members_only),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_user_invites),
|
|
||||||
?MAKE_CONFIG_OPT(#config.password_protected),
|
|
||||||
?MAKE_CONFIG_OPT(#config.captcha_protected),
|
|
||||||
?MAKE_CONFIG_OPT(#config.password), ?MAKE_CONFIG_OPT(#config.anonymous),
|
|
||||||
?MAKE_CONFIG_OPT(#config.logging), ?MAKE_CONFIG_OPT(#config.max_users),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_voice_requests),
|
|
||||||
?MAKE_CONFIG_OPT(#config.allow_subscription),
|
|
||||||
?MAKE_CONFIG_OPT(#config.mam),
|
|
||||||
?MAKE_CONFIG_OPT(#config.presence_broadcast),
|
|
||||||
?MAKE_CONFIG_OPT(#config.voice_request_min_interval),
|
|
||||||
?MAKE_CONFIG_OPT(#config.vcard),
|
|
||||||
{captcha_whitelist,
|
|
||||||
(?SETS):to_list((StateData#state.config)#config.captcha_whitelist)},
|
|
||||||
{affiliations,
|
|
||||||
maps:to_list(StateData#state.affiliations)},
|
|
||||||
{subject, StateData#state.subject},
|
|
||||||
{subject_author, StateData#state.subject_author},
|
|
||||||
{subscribers, Subscribers}].
|
|
||||||
|
|
||||||
|
|
||||||
%%----------------------------
|
%%----------------------------
|
||||||
%% Utils
|
%% Utils
|
||||||
%%----------------------------
|
%%----------------------------
|
||||||
|
@ -712,6 +712,7 @@ handle_sync_event({process_item_change, Item, UJID}, _From, StateName, StateData
|
|||||||
{error, _} = Err ->
|
{error, _} = Err ->
|
||||||
{reply, Err, StateName, StateData};
|
{reply, Err, StateName, StateData};
|
||||||
NSD ->
|
NSD ->
|
||||||
|
store_room(NSD),
|
||||||
{reply, {ok, NSD}, StateName, NSD}
|
{reply, {ok, NSD}, StateName, NSD}
|
||||||
end;
|
end;
|
||||||
handle_sync_event(get_subscribers, _From, StateName, StateData) ->
|
handle_sync_event(get_subscribers, _From, StateName, StateData) ->
|
||||||
|
Loading…
Reference in New Issue
Block a user