aboutsummaryrefslogtreecommitdiff
path: root/src/mod_roster.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2004-12-19 20:47:35 +0000
committerAlexey Shchepin <alexey@process-one.net>2004-12-19 20:47:35 +0000
commit50bef3787af73806f7311404bb1210a837999a15 (patch)
tree34cb72131fbd3d1834e7d781cfd028d885379111 /src/mod_roster.erl
parent* src/ejabberd_sm.erl: Updated missed message passing from (diff)
* 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
Diffstat (limited to 'src/mod_roster.erl')
-rw-r--r--src/mod_roster.erl45
1 files changed, 32 insertions, 13 deletions
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