aboutsummaryrefslogtreecommitdiff
path: root/src/mod_last.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2016-06-08 13:02:02 +0200
committerBadlop <badlop@process-one.net>2016-06-08 13:02:20 +0200
commit5173de503ca18c46ca8a9541ffb07c8aaf2d8769 (patch)
tree2ddb6186c71a94a5a6a3bea91e3e498956cd076d /src/mod_last.erl
parentWhen stopping ejabberd, stop modules after broadcasting c2s shutdown (#1144) (diff)
Produce mod_last entry on account creation (processone/ejabberd-contrib#62)
Diffstat (limited to 'src/mod_last.erl')
-rw-r--r--src/mod_last.erl13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mod_last.erl b/src/mod_last.erl
index c39681f69..92694cf13 100644
--- a/src/mod_last.erl
+++ b/src/mod_last.erl
@@ -37,7 +37,7 @@
process_sm_iq/3, on_presence_update/4, import/1,
import/3, store_last_info/4, get_last_info/2,
remove_user/2, transform_options/1, mod_opt_type/1,
- opt_type/1]).
+ opt_type/1, register_user/2]).
-include("ejabberd.hrl").
-include("logger.hrl").
@@ -64,12 +64,16 @@ start(Host, Opts) ->
?NS_LAST, ?MODULE, process_local_iq, IQDisc),
gen_iq_handler:add_iq_handler(ejabberd_sm, Host,
?NS_LAST, ?MODULE, process_sm_iq, IQDisc),
+ ejabberd_hooks:add(register_user, Host, ?MODULE,
+ register_user, 50),
ejabberd_hooks:add(remove_user, Host, ?MODULE,
remove_user, 50),
ejabberd_hooks:add(unset_presence_hook, Host, ?MODULE,
on_presence_update, 50).
stop(Host) ->
+ ejabberd_hooks:delete(register_user, Host, ?MODULE,
+ register_user, 50),
ejabberd_hooks:delete(remove_user, Host, ?MODULE,
remove_user, 50),
ejabberd_hooks:delete(unset_presence_hook, Host,
@@ -198,6 +202,13 @@ get_last_iq(#iq{lang = Lang} = IQ, SubEl, LUser, LServer) ->
children = []}]}
end.
+register_user(User, Server) ->
+ on_presence_update(
+ User,
+ Server,
+ <<"RegisterResource">>,
+ <<"Registered but didn't login">>).
+
on_presence_update(User, Server, _Resource, Status) ->
TimeStamp = p1_time_compat:system_time(seconds),
store_last_info(User, Server, TimeStamp, Status).