diff options
Diffstat (limited to 'src/mod_admin_extra.erl')
-rw-r--r-- | src/mod_admin_extra.erl | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/mod_admin_extra.erl b/src/mod_admin_extra.erl index 013c342d8..799f0079f 100644 --- a/src/mod_admin_extra.erl +++ b/src/mod_admin_extra.erl @@ -44,7 +44,7 @@ kick_session/4, status_num/2, status_num/1, status_list/2, status_list/1, connected_users_info/0, connected_users_vhost/1, set_presence/7, - get_presence/2, user_sessions_info/2, get_last/2, + get_presence/2, user_sessions_info/2, get_last/2, set_last/4, % Accounts set_password/3, check_password_hash/4, delete_old_users/1, @@ -93,8 +93,13 @@ start(_Host, _Opts) -> ejabberd_commands:register_commands(get_commands_spec()). -stop(_Host) -> - ejabberd_commands:unregister_commands(get_commands_spec()). +stop(Host) -> + case gen_mod:is_loaded_elsewhere(Host, ?MODULE) of + false -> + ejabberd_commands:unregister_commands(get_commands_spec()); + true -> + ok + end. reload(_Host, _NewOpts, _OldOpts) -> ok. @@ -602,9 +607,9 @@ get_commands_spec() -> ]}}}, #ejabberd_commands{name = set_last, tags = [last], desc = "Set last activity information", - longdesc = "Timestamp is the seconds since" + longdesc = "Timestamp is the seconds since " "1970-01-01 00:00:00 UTC, for example: date +%s", - module = mod_last, function = store_last_info, + module = ?MODULE, function = set_last, args = [{user, binary}, {host, binary}, {timestamp, integer}, {status, binary}], args_example = [<<"user1">>,<<"myserver.com">>, 1500045311, <<"GoSleeping">>], args_desc = ["User name", "Server name", "Number of seconds since epoch", "Status message"], @@ -1437,6 +1442,12 @@ get_last(User, Server) -> end, {xmpp_util:encode_timestamp(Now), Status}. +set_last(User, Server, Timestamp, Status) -> + case mod_last:store_last_info(User, Server, Timestamp, Status) of + {ok, _} -> ok; + Error -> Error + end. + %%% %%% Private Storage %%% |