summaryrefslogtreecommitdiff
path: root/src/mod_muc_room.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-19 11:12:27 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-01-19 11:12:27 +0300
commit527472f18c638b3f2245d95957a15329a464d018 (patch)
treea6d55b514650539ebe100261b6545be1ecf5604e /src/mod_muc_room.erl
parentFix typo (diff)
Support legacy muc#roomconfig values (#1469)
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r--src/mod_muc_room.erl25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index ceb834d3..3bdd8f8c 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -2994,6 +2994,28 @@ get_actor_nick(MJID, StateData) ->
_ -> <<"">>
end.
+convert_legacy_fields(Fs) ->
+ lists:map(
+ fun(#xdata_field{var = Var} = F) ->
+ NewVar = case Var of
+ <<"muc#roomconfig_allowvisitorstatus">> ->
+ <<"allow_visitor_status">>;
+ <<"muc#roomconfig_allowvisitornickchange">> ->
+ <<"allow_visitor_nickchange">>;
+ <<"muc#roomconfig_allowvoicerequests">> ->
+ <<"allow_voice_requests">>;
+ <<"muc#roomconfig_allow_subscription">> ->
+ <<"allow_subscription">>;
+ <<"muc#roomconfig_voicerequestmininterval">> ->
+ <<"voice_request_min_interval">>;
+ <<"muc#roomconfig_captcha_whitelist">> ->
+ <<"captcha_whitelist">>;
+ _ ->
+ Var
+ end,
+ F#xdata_field{var = NewVar}
+ end, Fs).
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Owner stuff
-spec process_iq_owner(jid(), iq(), state()) ->
@@ -3019,7 +3041,8 @@ process_iq_owner(From, #iq{type = set, lang = Lang,
#xdata{type = cancel} ->
{result, undefined};
#xdata{type = submit, fields = Fs} ->
- try muc_roomconfig:decode(Fs) of
+ Fs1 = convert_legacy_fields(Fs),
+ try muc_roomconfig:decode(Fs1) of
Options ->
case is_allowed_log_change(Options, StateData, From) andalso
is_allowed_persistent_change(Options, StateData, From) andalso