aboutsummaryrefslogtreecommitdiff
path: root/src/ejd2odbc.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejd2odbc.erl')
-rw-r--r--src/ejd2odbc.erl44
1 files changed, 43 insertions, 1 deletions
diff --git a/src/ejd2odbc.erl b/src/ejd2odbc.erl
index 8daea9c6c..5f7b9d4da 100644
--- a/src/ejd2odbc.erl
+++ b/src/ejd2odbc.erl
@@ -34,7 +34,9 @@
export_last/2,
export_vcard/2,
export_vcard_search/2,
- export_private_storage/2]).
+ export_private_storage/2,
+ export_muc_room/2,
+ export_muc_registered/2]).
-include("ejabberd.hrl").
-include("jlib.hrl").
@@ -58,6 +60,8 @@
orgunit, lorgunit
}).
-record(private_storage, {usns, xml}).
+-record(muc_room, {name_host, opts}).
+-record(muc_registered, {us_host, nick}).
-define(MAX_RECORDS_PER_TRANSACTION, 1000).
@@ -265,6 +269,44 @@ export_private_storage(Server, Output) ->
[]
end).
+export_muc_room(Server, Output) ->
+ export_common(
+ Server, muc_room, Output,
+ fun(Host, #muc_room{name_host = {Name, RoomHost}, opts = Opts}) ->
+ case lists:suffix(Host, RoomHost) of
+ true ->
+ SName = ejabberd_odbc:escape(Name),
+ SRoomHost = ejabberd_odbc:escape(RoomHost),
+ SOpts = mod_muc_odbc:encode_opts(Opts),
+ ["delete from muc_room where name='", SName,
+ "' and host='", SRoomHost, "';",
+ "insert into muc_room(name, host, opts) values (",
+ "'", SName, "', '", SRoomHost, "', '", SOpts, "');"];
+ false ->
+ []
+ end
+ end).
+
+export_muc_registered(Server, Output) ->
+ export_common(
+ Server, muc_registered, Output,
+ fun(Host, #muc_registered{us_host = {{U, S}, RoomHost}, nick = Nick}) ->
+ case lists:suffix(Host, RoomHost) of
+ true ->
+ SJID = ejabberd_odbc:escape(
+ jlib:jid_to_string(
+ jlib:make_jid(U, S, ""))),
+ SNick = ejabberd_odbc:escape(Nick),
+ SRoomHost = ejabberd_odbc:escape(RoomHost),
+ ["delete from muc_registered where jid='", SJID,
+ "' and host='", SRoomHost, "';"
+ "insert into muc_registered(jid, host, nick) values ("
+ "'", SJID, "', '", SRoomHost, "', '", SNick, "');"];
+ false ->
+ []
+ end
+ end).
+
%%%----------------------------------------------------------------------
%%% Internal functions
%%%----------------------------------------------------------------------