diff options
Diffstat (limited to 'src/mod_shared_roster.erl')
-rw-r--r-- | src/mod_shared_roster.erl | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/mod_shared_roster.erl b/src/mod_shared_roster.erl index 2501ef2b5..743b1dd62 100644 --- a/src/mod_shared_roster.erl +++ b/src/mod_shared_roster.erl @@ -30,9 +30,9 @@ -behaviour(gen_mod). --export([start/2, stop/1, item_to_xml/1, export/1, +-export([start/2, stop/1, item_to_xml/1, export/1, import/1, webadmin_menu/3, webadmin_page/3, get_user_roster/2, - get_subscription_lists/3, get_jid_info/4, + get_subscription_lists/3, get_jid_info/4, import/3, process_item/2, in_subscription/6, out_subscription/4, user_available/1, unset_presence/4, register_user/2, remove_user/2, list_groups/1, create_group/2, @@ -1334,3 +1334,22 @@ export(_Server) -> (_Host, _R) -> [] end}]. + +import(LServer) -> + [{<<"select name, opts from sr_group;">>, + fun([Group, SOpts]) -> + #sr_group{group_host = {Group, LServer}, + opts = ejabberd_odbc:decode_term(SOpts)} + end}, + {<<"select jid, grp from sr_user;">>, + fun([SJID, Group]) -> + #jid{luser = U, lserver = S} = jlib:string_to_jid(SJID), + #sr_user{us = {U, S}, group_host = {Group, LServer}} + end}]. + +import(_LServer, mnesia, #sr_group{} = G) -> + mnesia:dirty_write(G); +import(_LServer, mnesia, #sr_user{} = U) -> + mnesia:dirty_write(U); +import(_, _, _) -> + pass. |