summaryrefslogtreecommitdiff
path: root/src/mod_privacy.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-01-29 14:14:08 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-01-29 14:14:08 +0300
commit54dc2f56c6170dc54b4f3ca64c9cc3f3921af6bd (patch)
treea218c70c4d87544852da46b0a2a8105d85f3581b /src/mod_privacy.erl
parentInitial version of migration script from Prosody to ejabberd (diff)
Import privacy lists from Prosody
Diffstat (limited to 'src/mod_privacy.erl')
-rw-r--r--src/mod_privacy.erl32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index 9c2af037..62b043db 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -35,7 +35,8 @@
process_iq_set/4, process_iq_get/5, get_user_list/3,
check_packet/6, remove_user/2, item_to_raw/1,
raw_to_item/1, is_list_needdb/1, updated_list/3,
- item_to_xml/1, get_user_lists/2, import/3]).
+ item_to_xml/1, get_user_lists/2, import/3,
+ set_privacy_list/1]).
-export([sql_add_privacy_list/2,
sql_get_default_privacy_list/2,
@@ -529,6 +530,35 @@ remove_privacy_list(LUser, LServer, Name, odbc) ->
end,
odbc_queries:sql_transaction(LServer, F).
+set_privacy_list(#privacy{us = {_, LServer}} = Privacy) ->
+ DBType = gen_mod:db_type(LServer, ?MODULE),
+ set_privacy_list(Privacy, DBType).
+
+set_privacy_list(Privacy, mnesia) ->
+ mnesia:dirty_write(Privacy);
+set_privacy_list(Privacy, riak) ->
+ ejabberd_riak:put(Privacy, privacy_schema());
+set_privacy_list(#privacy{us = {LUser, LServer},
+ default = Default,
+ lists = Lists}, odbc) ->
+ F = fun() ->
+ lists:foreach(
+ fun({Name, List}) ->
+ sql_add_privacy_list(LUser, Name),
+ {selected, [<<"id">>], [[I]]} =
+ sql_get_privacy_list_id_t(LUser, Name),
+ RItems = lists:map(fun item_to_raw/1, List),
+ sql_set_privacy_list(I, RItems),
+ if is_binary(Default) ->
+ sql_set_default_privacy_list(LUser, Default),
+ ok;
+ true ->
+ ok
+ end
+ end, Lists)
+ end,
+ odbc_queries:sql_transaction(LServer, F).
+
set_privacy_list(LUser, LServer, Name, List, mnesia) ->
F = fun () ->
case mnesia:wread({privacy, {LUser, LServer}}) of