diff options
Diffstat (limited to 'src/mod_announce_sql.erl')
-rw-r--r-- | src/mod_announce_sql.erl | 65 |
1 files changed, 30 insertions, 35 deletions
diff --git a/src/mod_announce_sql.erl b/src/mod_announce_sql.erl index 692c8fae4..762c97ad6 100644 --- a/src/mod_announce_sql.erl +++ b/src/mod_announce_sql.erl @@ -9,6 +9,8 @@ -module(mod_announce_sql). -behaviour(mod_announce). +-compile([{parse_transform, ejabberd_sql_pt}]). + %% API -export([init/2, set_motd_users/2, set_motd/2, delete_motd/1, get_motd/1, is_motd_user/2, set_motd_user/2, import/1, @@ -16,6 +18,7 @@ -include("jlib.hrl"). -include("mod_announce.hrl"). +-include("ejabberd_sql_pt.hrl"). %%%=================================================================== %%% API @@ -27,37 +30,35 @@ set_motd_users(LServer, USRs) -> F = fun() -> lists:foreach( fun({U, _S, _R}) -> - Username = ejabberd_sql:escape(U), - sql_queries:update_t( - <<"motd">>, - [<<"username">>, <<"xml">>], - [Username, <<"">>], - [<<"username='">>, Username, <<"'">>]) + ?SQL_UPSERT_T( + "motd", + ["!username=%(U)s", + "xml=''"]) end, USRs) end, ejabberd_sql:sql_transaction(LServer, F). set_motd(LServer, Packet) -> - XML = ejabberd_sql:escape(fxml:element_to_binary(Packet)), + XML = fxml:element_to_binary(Packet), F = fun() -> - sql_queries:update_t( - <<"motd">>, - [<<"username">>, <<"xml">>], - [<<"">>, XML], - [<<"username=''">>]) + ?SQL_UPSERT_T( + "motd", + ["!username=''", + "xml=%(XML)s"]) end, ejabberd_sql:sql_transaction(LServer, F). delete_motd(LServer) -> F = fun() -> - ejabberd_sql:sql_query_t([<<"delete from motd;">>]) + ejabberd_sql:sql_query_t(?SQL("delete from motd")) end, ejabberd_sql:sql_transaction(LServer, F). get_motd(LServer) -> case catch ejabberd_sql:sql_query( - LServer, [<<"select xml from motd where username='';">>]) of - {selected, [<<"xml">>], [[XML]]} -> + LServer, + ?SQL("select @(xml)s from motd where username=''")) of + {selected, [{XML}]} -> case fxml_stream:parse_element(XML) of {error, _} -> error; @@ -69,46 +70,40 @@ get_motd(LServer) -> end. is_motd_user(LUser, LServer) -> - Username = ejabberd_sql:escape(LUser), case catch ejabberd_sql:sql_query( - LServer, - [<<"select username from motd " - "where username='">>, Username, <<"';">>]) of - {selected, [<<"username">>], [_|_]} -> + LServer, + ?SQL("select @(username)s from motd" + " where username=%(LUser)s")) of + {selected, [_|_]} -> true; _ -> false end. set_motd_user(LUser, LServer) -> - Username = ejabberd_sql:escape(LUser), F = fun() -> - sql_queries:update_t( - <<"motd">>, - [<<"username">>, <<"xml">>], - [Username, <<"">>], - [<<"username='">>, Username, <<"'">>]) - end, + ?SQL_UPSERT_T( + "motd", + ["!username=%(LUser)s", + "xml=''"]) + end, ejabberd_sql:sql_transaction(LServer, F). export(_Server) -> [{motd, fun(Host, #motd{server = LServer, packet = El}) when LServer == Host -> - [[<<"delete from motd where username='';">>], - [<<"insert into motd(username, xml) values ('', '">>, - ejabberd_sql:escape(fxml:element_to_binary(El)), - <<"');">>]]; + XML = fxml:element_to_binary(El), + [?SQL("delete from motd where username='';"), + ?SQL("insert into motd(username, xml) values ('', %(XML)s);")]; (_Host, _R) -> [] end}, {motd_users, fun(Host, #motd_users{us = {LUser, LServer}}) when LServer == Host, LUser /= <<"">> -> - Username = ejabberd_sql:escape(LUser), - [[<<"delete from motd where username='">>, Username, <<"';">>], - [<<"insert into motd(username, xml) values ('">>, - Username, <<"', '');">>]]; + [?SQL("delete from motd where username=%(LUser)s;"), + ?SQL("insert into motd(username, xml) values (%(LUser)s, '');")]; (_Host, _R) -> [] end}]. |