From 74f15f790a4158269b2bf7ec0d3b3ed9eb4998d5 Mon Sep 17 00:00:00 2001 From: Badlop Date: Tue, 23 Dec 2008 00:48:09 +0000 Subject: * 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 --- src/mod_privacy.erl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/mod_privacy.erl') diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl index 4de51b260..6d6c64cf4 100644 --- a/src/mod_privacy.erl +++ b/src/mod_privacy.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"). @@ -57,6 +58,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). @@ -71,6 +74,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) -> @@ -659,6 +664,16 @@ is_type_match(Type, Value, JID, Subscription, Groups) -> end. +remove_user(User, Server) -> + LUser = jlib:nodeprep(User), + LServer = jlib:nameprep(Server), + F = fun() -> + mnesia:delete({privacy, + {LUser, LServer}}) + end, + mnesia:transaction(F). + + updated_list(_, #userlist{name = OldName} = Old, #userlist{name = NewName} = New) -> @@ -670,7 +685,6 @@ updated_list(_, end. - update_table() -> Fields = record_info(fields, privacy), case mnesia:table_info(privacy, attributes) of -- cgit v1.2.3