aboutsummaryrefslogtreecommitdiff
path: root/src/mod_shared_roster.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_shared_roster.erl')
-rw-r--r--src/mod_shared_roster.erl23
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.