aboutsummaryrefslogtreecommitdiff
path: root/src/mod_blocking.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_blocking.erl')
-rw-r--r--src/mod_blocking.erl91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/mod_blocking.erl b/src/mod_blocking.erl
index 797b7573b..1bd7ae3b5 100644
--- a/src/mod_blocking.erl
+++ b/src/mod_blocking.erl
@@ -181,6 +181,37 @@ process_blocklist_block(LUser, LServer, Filter,
{ok, NewDefault, NewList}
end,
mnesia:transaction(F);
+process_blocklist_block(LUser, LServer, Filter,
+ riak) ->
+ {atomic,
+ begin
+ case ejabberd_riak:get(privacy, {LUser, LServer}) of
+ {ok, #privacy{default = Default, lists = Lists} = P} ->
+ case lists:keysearch(Default, 1, Lists) of
+ {value, {_, List}} ->
+ NewDefault = Default,
+ NewLists1 = lists:keydelete(Default, 1, Lists);
+ false ->
+ NewDefault = <<"Blocked contacts">>,
+ NewLists1 = Lists,
+ List = []
+ end;
+ {error, _} ->
+ P = #privacy{us = {LUser, LServer}},
+ NewDefault = <<"Blocked contacts">>,
+ NewLists1 = [],
+ List = []
+ end,
+ NewList = Filter(List),
+ NewLists = [{NewDefault, NewList} | NewLists1],
+ case ejabberd_riak:put(P#privacy{default = NewDefault,
+ lists = NewLists}) of
+ ok ->
+ {ok, NewDefault, NewList};
+ Err ->
+ Err
+ end
+ end};
process_blocklist_block(LUser, LServer, Filter, odbc) ->
F = fun () ->
Default = case
@@ -257,6 +288,30 @@ process_blocklist_unblock_all(LUser, LServer, Filter,
end,
mnesia:transaction(F);
process_blocklist_unblock_all(LUser, LServer, Filter,
+ riak) ->
+ {atomic,
+ case ejabberd_riak:get(privacy, {LUser, LServer}) of
+ {ok, #privacy{default = Default, lists = Lists} = P} ->
+ case lists:keysearch(Default, 1, Lists) of
+ {value, {_, List}} ->
+ NewList = Filter(List),
+ NewLists1 = lists:keydelete(Default, 1, Lists),
+ NewLists = [{Default, NewList} | NewLists1],
+ case ejabberd_riak:put(P#privacy{lists = NewLists}) of
+ ok ->
+ {ok, Default, NewList};
+ Err ->
+ Err
+ end;
+ false ->
+ %% No default list, nothing to unblock
+ ok
+ end;
+ {error, _} ->
+ %% No lists, nothing to unblock
+ ok
+ end};
+process_blocklist_unblock_all(LUser, LServer, Filter,
odbc) ->
F = fun () ->
case mod_privacy:sql_get_default_privacy_list_t(LUser)
@@ -332,6 +387,30 @@ process_blocklist_unblock(LUser, LServer, Filter,
end,
mnesia:transaction(F);
process_blocklist_unblock(LUser, LServer, Filter,
+ riak) ->
+ {atomic,
+ case ejabberd_riak:get(privacy, {LUser, LServer}) of
+ {error, _} ->
+ %% No lists, nothing to unblock
+ ok;
+ {ok, #privacy{default = Default, lists = Lists} = P} ->
+ case lists:keysearch(Default, 1, Lists) of
+ {value, {_, List}} ->
+ NewList = Filter(List),
+ NewLists1 = lists:keydelete(Default, 1, Lists),
+ NewLists = [{Default, NewList} | NewLists1],
+ case ejabberd_riak:put(P#privacy{lists = NewLists}) of
+ ok ->
+ {ok, Default, NewList};
+ Err ->
+ Err
+ end;
+ false ->
+ %% No default list, nothing to unblock
+ ok
+ end
+ end};
+process_blocklist_unblock(LUser, LServer, Filter,
odbc) ->
F = fun () ->
case mod_privacy:sql_get_default_privacy_list_t(LUser)
@@ -409,6 +488,18 @@ process_blocklist_get(LUser, LServer, mnesia) ->
_ -> []
end
end;
+process_blocklist_get(LUser, LServer, riak) ->
+ case ejabberd_riak:get(privacy, {LUser, LServer}) of
+ {ok, #privacy{default = Default, lists = Lists}} ->
+ case lists:keysearch(Default, 1, Lists) of
+ {value, {_, List}} -> List;
+ _ -> []
+ end;
+ {error, notfound} ->
+ [];
+ {error, _} ->
+ error
+ end;
process_blocklist_get(LUser, LServer, odbc) ->
case catch
mod_privacy:sql_get_default_privacy_list(LUser, LServer)