aboutsummaryrefslogtreecommitdiff
path: root/src/mod_muc/mod_muc_odbc.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_muc/mod_muc_odbc.erl')
-rw-r--r--src/mod_muc/mod_muc_odbc.erl48
1 files changed, 8 insertions, 40 deletions
diff --git a/src/mod_muc/mod_muc_odbc.erl b/src/mod_muc/mod_muc_odbc.erl
index 318b8a70b..47dc4c9ef 100644
--- a/src/mod_muc/mod_muc_odbc.erl
+++ b/src/mod_muc/mod_muc_odbc.erl
@@ -41,8 +41,6 @@
create_room/5,
process_iq_disco_items/4,
broadcast_service_message/2,
- encode_opts/1,
- decode_opts/1,
can_use_nick/4]).
%% gen_server callbacks
@@ -115,11 +113,12 @@ store_room(ServerHost, Host, Name, Opts) ->
SName = ejabberd_odbc:escape(Name),
SHost = ejabberd_odbc:escape(Host),
LServer = jlib:nameprep(ServerHost),
+ SOpts = ejabberd_odbc:encode_term(Opts),
F = fun() ->
- update_t(
+ odbc_queries:update_t(
"muc_room",
["name", "host", "opts"],
- [SName, SHost, encode_opts(Opts)],
+ [SName, SHost, SOpts],
["name='", SName, "' and host='", SHost, "'"])
end,
ejabberd_odbc:sql_transaction(LServer, F).
@@ -132,7 +131,7 @@ restore_room(ServerHost, Host, Name) ->
LServer, ["select opts from muc_room where name='",
SName, "' and host='", SHost, "';"]) of
{selected, ["opts"], [{Opts}]} ->
- decode_opts(Opts);
+ ejabberd_odbc:decode_term(Opts);
_ ->
error
end.
@@ -549,7 +548,7 @@ load_permanent_rooms(Host, ServerHost, Access, HistorySize, RoomShaper) ->
Room,
HistorySize,
RoomShaper,
- decode_opts(Opts),
+ ejabberd_odbc:decode_term(Opts),
?MODULE),
register_room(Host, Room, Pid);
_ ->
@@ -577,7 +576,8 @@ start_new_room(Host, ServerHost, Access, Room,
?DEBUG("MUC: restore room '~s'~n", [Room]),
mod_muc_room:start(Host, ServerHost, Access,
Room, HistorySize,
- RoomShaper, decode_opts(Opts), ?MODULE)
+ RoomShaper, ejabberd_odbc:decode_term(Opts),
+ ?MODULE)
end.
register_room(Host, Room, Pid) ->
@@ -766,7 +766,7 @@ iq_set_register_info(ServerHost, Host, From, Nick, Lang) ->
true
end,
if Allow ->
- update_t(
+ odbc_queries:update_t(
"muc_registered",
["jid", "host", "nick"],
[SJID, SHost, SNick],
@@ -873,35 +873,3 @@ clean_table_from_bad_node(Node, Host) ->
end, Es)
end,
mnesia:async_dirty(F).
-
-encode_opts(Opts) ->
- ejabberd_odbc:escape(erl_prettypr:format(erl_syntax:abstract(Opts))).
-
-decode_opts(Str) ->
- {ok, Tokens, _} = erl_scan:string(Str ++ "."),
- {ok, Opts} = erl_parse:parse_term(Tokens),
- Opts.
-
-%% Almost a copy of string:join/2.
-%% We use this version because string:join/2 is relatively
-%% new function (introduced in R12B-0).
-join([], _Sep) ->
- [];
-join([H|T], Sep) ->
- [H, [[Sep, X] || X <- T]].
-
-%% Safe atomic update.
-update_t(Table, Fields, Vals, Where) ->
- UPairs = lists:zipwith(fun(A, B) -> A ++ "='" ++ B ++ "'" end,
- Fields, Vals),
- case ejabberd_odbc:sql_query_t(
- ["update ", Table, " set ",
- join(UPairs, ", "),
- " where ", Where, ";"]) of
- {updated, 1} ->
- ok;
- _ ->
- ejabberd_odbc:sql_query_t(
- ["insert into ", Table, "(", join(Fields, ", "),
- ") values ('", join(Vals, "', '"), "');"])
- end.