diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-01-29 14:14:08 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2016-01-29 14:14:08 +0300 |
commit | 54dc2f56c6170dc54b4f3ca64c9cc3f3921af6bd (patch) | |
tree | a218c70c4d87544852da46b0a2a8105d85f3581b /src/mod_privacy.erl | |
parent | Initial 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.erl | 32 |
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 |