aboutsummaryrefslogtreecommitdiff
path: root/src/mod_privacy_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_privacy_sql.erl')
-rw-r--r--src/mod_privacy_sql.erl83
1 files changed, 47 insertions, 36 deletions
diff --git a/src/mod_privacy_sql.erl b/src/mod_privacy_sql.erl
index b19c95fe5..7939cbb26 100644
--- a/src/mod_privacy_sql.erl
+++ b/src/mod_privacy_sql.erl
@@ -56,13 +56,13 @@ unset_default(LUser, LServer) ->
set_default(LUser, LServer, Name) ->
F = fun () ->
- case get_privacy_list_names_t(LUser) of
+ case get_privacy_list_names_t(LUser, LServer) of
{selected, []} ->
{error, notfound};
{selected, Names} ->
case lists:member({Name}, Names) of
true ->
- set_default_privacy_list(LUser, Name);
+ set_default_privacy_list(LUser, LServer, Name);
false ->
{error, notfound}
end
@@ -72,14 +72,14 @@ set_default(LUser, LServer, Name) ->
remove_list(LUser, LServer, Name) ->
F = fun () ->
- case get_default_privacy_list_t(LUser) of
+ case get_default_privacy_list_t(LUser, LServer) of
{selected, []} ->
- remove_privacy_list_t(LUser, Name);
+ remove_privacy_list_t(LUser, LServer, Name);
{selected, [{Default}]} ->
if Name == Default ->
{error, conflict};
true ->
- remove_privacy_list_t(LUser, Name)
+ remove_privacy_list_t(LUser, LServer, Name)
end
end
end,
@@ -91,13 +91,14 @@ set_lists(#privacy{us = {LUser, LServer},
F = fun() ->
lists:foreach(
fun({Name, List}) ->
- add_privacy_list(LUser, Name),
+ add_privacy_list(LUser, LServer, Name),
{selected, [<<"id">>], [[I]]} =
- get_privacy_list_id_t(LUser, Name),
+ get_privacy_list_id_t(LUser, LServer, Name),
RItems = lists:map(fun item_to_raw/1, List),
set_privacy_list(I, RItems),
if is_binary(Default) ->
- set_default_privacy_list(LUser, Default);
+ set_default_privacy_list(
+ LUser, LServer, Default);
true ->
ok
end
@@ -108,11 +109,11 @@ set_lists(#privacy{us = {LUser, LServer},
set_list(LUser, LServer, Name, List) ->
RItems = lists:map(fun item_to_raw/1, List),
F = fun () ->
- ID = case get_privacy_list_id_t(LUser, Name) of
+ ID = case get_privacy_list_id_t(LUser, LServer, Name) of
{selected, []} ->
- add_privacy_list(LUser, Name),
+ add_privacy_list(LUser, LServer, Name),
{selected, [{I}]} =
- get_privacy_list_id_t(LUser, Name),
+ get_privacy_list_id_t(LUser, LServer, Name),
I;
{selected, [{I}]} -> I
end,
@@ -199,9 +200,12 @@ export(Server) ->
when LServer == Host ->
if Default /= none ->
[?SQL("delete from privacy_default_list where"
- " username=%(LUser)s;"),
- ?SQL("insert into privacy_default_list(username, name) "
- "values (%(LUser)s, %(Default)s);")];
+ " username=%(LUser)s and %(LServer)H;"),
+ ?SQL_INSERT(
+ "privacy_default_list",
+ ["username=%(LUser)s",
+ "server_host=%(LServer)s",
+ "name=%(Default)s"])];
true ->
[]
end ++
@@ -210,11 +214,14 @@ export(Server) ->
RItems = lists:map(fun item_to_raw/1, List),
ID = get_id(),
[?SQL("delete from privacy_list where"
- " username=%(LUser)s and"
+ " username=%(LUser)s and %(LServer)H and"
" name=%(Name)s;"),
- ?SQL("insert into privacy_list(username, "
- "name, id) values ("
- "%(LUser)s, %(Name)s, %(ID)d);"),
+ ?SQL_INSERT(
+ "privacy_list",
+ ["username=%(LUser)s",
+ "server_host=%(LServer)s",
+ "name=%(Name)s",
+ "id=%(ID)d"]),
?SQL("delete from privacy_list_data where"
" id=%(ID)d;")] ++
[?SQL("insert into privacy_list_data(id, t, "
@@ -312,28 +319,28 @@ get_default_privacy_list(LUser, LServer) ->
ejabberd_sql:sql_query(
LServer,
?SQL("select @(name)s from privacy_default_list "
- "where username=%(LUser)s")).
+ "where username=%(LUser)s and %(LServer)H")).
-get_default_privacy_list_t(LUser) ->
+get_default_privacy_list_t(LUser, LServer) ->
ejabberd_sql:sql_query_t(
?SQL("select @(name)s from privacy_default_list "
- "where username=%(LUser)s")).
+ "where username=%(LUser)s and %(LServer)H")).
get_privacy_list_names(LUser, LServer) ->
ejabberd_sql:sql_query(
LServer,
?SQL("select @(name)s from privacy_list"
- " where username=%(LUser)s")).
+ " where username=%(LUser)s and %(LServer)H")).
-get_privacy_list_names_t(LUser) ->
+get_privacy_list_names_t(LUser, LServer) ->
ejabberd_sql:sql_query_t(
?SQL("select @(name)s from privacy_list"
- " where username=%(LUser)s")).
+ " where username=%(LUser)s and %(LServer)H")).
-get_privacy_list_id_t(LUser, Name) ->
+get_privacy_list_id_t(LUser, LServer, Name) ->
ejabberd_sql:sql_query_t(
?SQL("select @(id)d from privacy_list"
- " where username=%(LUser)s and name=%(Name)s")).
+ " where username=%(LUser)s and %(LServer)H and name=%(Name)s")).
get_privacy_list_data(LUser, LServer, Name) ->
ejabberd_sql:sql_query(
@@ -343,37 +350,41 @@ get_privacy_list_data(LUser, LServer, Name) ->
"@(match_presence_out)b from privacy_list_data "
"where id ="
" (select id from privacy_list"
- " where username=%(LUser)s and name=%(Name)s) "
+ " where username=%(LUser)s and %(LServer)H and name=%(Name)s) "
"order by ord")).
-set_default_privacy_list(LUser, Name) ->
+set_default_privacy_list(LUser, LServer, Name) ->
?SQL_UPSERT_T(
"privacy_default_list",
["!username=%(LUser)s",
+ "!server_host=%(LServer)s",
"name=%(Name)s"]).
unset_default_privacy_list(LUser, LServer) ->
case ejabberd_sql:sql_query(
LServer,
?SQL("delete from privacy_default_list"
- " where username=%(LUser)s")) of
+ " where username=%(LUser)s and %(LServer)H")) of
{updated, _} -> ok;
Err -> Err
end.
-remove_privacy_list_t(LUser, Name) ->
+remove_privacy_list_t(LUser, LServer, Name) ->
case ejabberd_sql:sql_query_t(
?SQL("delete from privacy_list where"
- " username=%(LUser)s and name=%(Name)s")) of
+ " username=%(LUser)s and %(LServer)H and name=%(Name)s")) of
{updated, 0} -> {error, notfound};
{updated, _} -> ok;
Err -> Err
end.
-add_privacy_list(LUser, Name) ->
+add_privacy_list(LUser, LServer, Name) ->
ejabberd_sql:sql_query_t(
- ?SQL("insert into privacy_list(username, name) "
- "values (%(LUser)s, %(Name)s)")).
+ ?SQL_INSERT(
+ "privacy_list",
+ ["username=%(LUser)s",
+ "server_host=%(LServer)s",
+ "name=%(Name)s"])).
set_privacy_list(ID, RItems) ->
ejabberd_sql:sql_query_t(
@@ -395,12 +406,12 @@ set_privacy_list(ID, RItems) ->
del_privacy_lists(LUser, LServer) ->
case ejabberd_sql:sql_query(
LServer,
- ?SQL("delete from privacy_list where username=%(LUser)s")) of
+ ?SQL("delete from privacy_list where username=%(LUser)s and %(LServer)H")) of
{updated, _} ->
case ejabberd_sql:sql_query(
LServer,
?SQL("delete from privacy_default_list "
- "where username=%(LUser)s")) of
+ "where username=%(LUser)s and %(LServer)H")) of
{updated, _} -> ok;
Err -> Err
end;