From 50bef3787af73806f7311404bb1210a837999a15 Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Sun, 19 Dec 2004 20:47:35 +0000 Subject: * src/mod_roster_odbc.erl: Roster support via ODBC (not completed) * src/ejabberd_auth_internal.erl: Added remove_user hook * src/ejabberd_auth_odbc.erl: Likewise * src/mod_roster.erl: Use remove_user hook * src/mod_offline.erl: Likewise * src/mod_offline_odbc.erl: Likewise * src/mod_last.erl: Likewise * src/mod_last_odbc.erl: Likewise * src/mod_vcard.erl: Likewise * src/mod_private.erl: Likewise * src/mod_roster.erl: Added hooks for functions exported by mod_roster * src/ejabberd_c2s.erl: Likewise * src/ejabberd_sm.erl: Likewise * src/mod_privacy.erl: Likewise * src/mod_last.erl: Likewise * src/mod_last_odbc.erl: Likewise SVN Revision: 294 --- src/mod_roster.erl | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'src/mod_roster.erl') diff --git a/src/mod_roster.erl b/src/mod_roster.erl index b356b412e..724b8d682 100644 --- a/src/mod_roster.erl +++ b/src/mod_roster.erl @@ -15,12 +15,12 @@ -export([start/1, stop/0, process_iq/3, process_local_iq/3, - get_subscription_lists/1, - in_subscription/3, + get_subscription_lists/2, + in_subscription/4, out_subscription/3, set_items/2, remove_user/1, - get_jid_info/2]). + get_jid_info/3]). -include("ejabberd.hrl"). -include("jlib.hrl"). @@ -40,10 +40,30 @@ start(Opts) -> mnesia:create_table(roster,[{disc_copies, [node()]}, {attributes, record_info(fields, roster)}]), mnesia:add_table_index(roster, user), + ejabberd_hooks:add(roster_in_subscription, + ?MODULE, in_subscription, 50), + ejabberd_hooks:add(roster_out_subscription, + ?MODULE, out_subscription, 50), + ejabberd_hooks:add(roster_get_subscription_lists, + ?MODULE, get_subscription_lists, 50), + ejabberd_hooks:add(roster_get_jid_info, + ?MODULE, get_jid_info, 50), + ejabberd_hooks:add(remove_user, + ?MODULE, remove_user, 50), gen_iq_handler:add_iq_handler(ejabberd_sm, ?NS_ROSTER, ?MODULE, process_iq, IQDisc). stop() -> + ejabberd_hooks:delete(roster_in_subscription, + ?MODULE, in_subscription, 50), + ejabberd_hooks:delete(roster_out_subscription, + ?MODULE, out_subscription, 50), + ejabberd_hooks:delete(roster_get_subscription_lists, + ?MODULE, get_subscription_lists, 50), + ejabberd_hooks:delete(roster_get_jid_info, + ?MODULE, get_jid_info, 50), + ejabberd_hooks:delete(remove_user, + ?MODULE, remove_user, 50), gen_iq_handler:remove_iq_handler(ejabberd_sm, ?NS_ROSTER). @@ -273,13 +293,12 @@ process_item_els(Item, []) -> push_item(User, From, Item) -> - ejabberd_sm ! {route, - jlib:make_jid("", "", ""), - jlib:make_jid(User, "", ""), - {xmlelement, "broadcast", [], - [{item, - Item#roster.jid, - Item#roster.subscription}]}}, + ejabberd_sm:route(jlib:make_jid("", "", ""), + jlib:make_jid(User, "", ""), + {xmlelement, "broadcast", [], + [{item, + Item#roster.jid, + Item#roster.subscription}]}), lists:foreach(fun(Resource) -> push_item(User, Resource, From, Item) end, ejabberd_sm:get_user_resources(User)). @@ -311,7 +330,7 @@ push_item(User, Resource, From, Item) -> -endif. -get_subscription_lists(User) -> +get_subscription_lists(_, User) -> LUser = jlib:nodeprep(User), case mnesia:dirty_index_read(roster, LUser, #roster.user) of Items when is_list(Items) -> @@ -341,7 +360,7 @@ ask_to_pending(Ask) -> Ask. -in_subscription(User, JID, Type) -> +in_subscription(_, User, JID, Type) -> process_subscription(in, User, JID, Type). out_subscription(User, JID, Type) -> @@ -594,7 +613,7 @@ process_item_attrs_ws(Item, []) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -get_jid_info(User, JID) -> +get_jid_info(_, User, JID) -> LUser = jlib:nodeprep(User), LJID = jlib:jid_tolower(JID), case catch mnesia:dirty_read(roster, {LUser, LJID}) of -- cgit v1.2.3