diff options
author | Badlop <badlop@process-one.net> | 2008-12-23 00:48:09 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2008-12-23 00:48:09 +0000 |
commit | 74f15f790a4158269b2bf7ec0d3b3ed9eb4998d5 (patch) | |
tree | 6b2e0928c297d5ab88a875cbe087501f207236d1 /src/mod_privacy_odbc.erl | |
parent | Fix 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.erl | 24 |
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, "';"]). |