summaryrefslogtreecommitdiff
path: root/src/mod_privacy_odbc.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2008-12-23 00:48:09 +0000
committerBadlop <badlop@process-one.net>2008-12-23 00:48:09 +0000
commit74f15f790a4158269b2bf7ec0d3b3ed9eb4998d5 (patch)
tree6b2e0928c297d5ab88a875cbe087501f207236d1 /src/mod_privacy_odbc.erl
parentFix send_last_published_item issue when running on clustered table (EJAB-793) (diff)
* src/odbc/odbc_queries.erl: Fix removal of private_storage of an
account when the account is removed * src/mod_privacy.erl: Remove privacy lists of an account when the account is removed (EJAB-720) * src/mod_privacy_odbc.erl: Likewise SVN Revision: 1742
Diffstat (limited to 'src/mod_privacy_odbc.erl')
-rw-r--r--src/mod_privacy_odbc.erl24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/mod_privacy_odbc.erl b/src/mod_privacy_odbc.erl
index 11e3956e..b5ad6544 100644
--- a/src/mod_privacy_odbc.erl
+++ b/src/mod_privacy_odbc.erl
@@ -35,6 +35,7 @@
process_iq_get/5,
get_user_list/3,
check_packet/6,
+ remove_user/2,
updated_list/3]).
-include("ejabberd.hrl").
@@ -53,6 +54,8 @@ start(Host, Opts) ->
?MODULE, check_packet, 50),
ejabberd_hooks:add(privacy_updated_list, Host,
?MODULE, updated_list, 50),
+ ejabberd_hooks:add(remove_user, Host,
+ ?MODULE, remove_user, 50),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_PRIVACY,
?MODULE, process_iq, IQDisc).
@@ -67,6 +70,8 @@ stop(Host) ->
?MODULE, check_packet, 50),
ejabberd_hooks:delete(privacy_updated_list, Host,
?MODULE, updated_list, 50),
+ ejabberd_hooks:delete(remove_user, Host,
+ ?MODULE, remove_user, 50),
gen_iq_handler:remove_iq_handler(ejabberd_sm, Host, ?NS_PRIVACY).
process_iq(_From, _To, IQ) ->
@@ -658,6 +663,12 @@ is_type_match(Type, Value, JID, Subscription, Groups) ->
end.
+remove_user(User, Server) ->
+ LUser = jlib:nodeprep(User),
+ LServer = jlib:nameprep(Server),
+ sql_del_privacy_lists(LUser, LServer).
+
+
updated_list(_,
#userlist{name = OldName} = Old,
#userlist{name = NewName} = New) ->
@@ -873,3 +884,16 @@ sql_set_privacy_list(ID, RItems) ->
") "
"values ('", ID, "', ", Items, ");"])
end, RItems).
+
+sql_del_privacy_lists(LUser, LServer) ->
+ Username = ejabberd_odbc:escape(LUser),
+ Server = ejabberd_odbc:escape(LServer),
+ ejabberd_odbc:sql_query(
+ LServer,
+ ["delete from privacy_list where username='", Username, "';"]),
+ ejabberd_odbc:sql_query(
+ LServer,
+ ["delete from privacy_list_data where value='", Username++"@"++Server, "';"]),
+ ejabberd_odbc:sql_query(
+ LServer,
+ ["delete from privacy_default_list where username='", Username, "';"]).