From 2a09bdad13389c8d3c77de50f43f42f1ef077279 Mon Sep 17 00:00:00 2001 From: Badlop Date: Wed, 9 Dec 2009 17:47:50 +0000 Subject: [PATCH] Call in WebAdmin the proper mod_last backend module (EJAB-1031) SVN Revision: 2800 --- src/mod_last.erl | 2 ++ src/web/ejabberd_web_admin.erl | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/mod_last.erl b/src/mod_last.erl index 02615e704..d16cc071c 100644 --- a/src/mod_last.erl +++ b/src/mod_last.erl @@ -170,6 +170,8 @@ store_last_info(User, Server, TimeStamp, Status) %% @spec (LUser::string(), LServer::string()) -> %% {ok, Timestamp::integer(), Status::string()} | not_found +get_last_info(LUser, LServer) when is_list(LUser), is_list(LServer) -> + get_last_info(list_to_binary(LUser), list_to_binary(LServer)); get_last_info(LUser, LServer) when is_binary(LUser), is_binary(LServer) -> case catch mnesia:dirty_read(last_activity, {LUser, LServer}) of {'EXIT', _Reason} -> diff --git a/src/web/ejabberd_web_admin.erl b/src/web/ejabberd_web_admin.erl index 3d0bba588..58448d6ae 100644 --- a/src/web/ejabberd_web_admin.erl +++ b/src/web/ejabberd_web_admin.erl @@ -1489,7 +1489,7 @@ list_users(Host, Query, Lang, URLFunc) -> FUsers = case length(SUsers) of N when N =< 100 -> - [list_given_users(SUsers, "../", Lang, URLFunc)]; + [list_given_users(Host, SUsers, "../", Lang, URLFunc)]; N -> NParts = trunc(math:sqrt(N * 0.618)) + 1, M = trunc(N / NParts) + 1, @@ -1567,9 +1567,10 @@ list_users_in_diapason(Host, Diap, Lang, URLFunc) -> N1 = list_to_integer(S1), N2 = list_to_integer(S2), Sub = lists:sublist(SUsers, N1, N2 - N1 + 1), - [list_given_users(Sub, "../../", Lang, URLFunc)]. + [list_given_users(Host, Sub, "../../", Lang, URLFunc)]. -list_given_users(Users, Prefix, Lang, URLFunc) -> +list_given_users(Host, Users, Prefix, Lang, URLFunc) -> + ModLast = get_lastactivity_module(Host), ?XE('table', [?XE('thead', [?XE('tr', @@ -1593,11 +1594,10 @@ list_given_users(Users, Prefix, Lang, URLFunc) -> FLast = case ejabberd_sm:get_user_resources(UserB, ServerB) of [] -> - case mnesia:dirty_read({last_activity, US}) of - [] -> + case ModLast:get_last_info(User, Server) of + not_found -> ?T("Never"); - [E] -> - Shift = element(3, E), + {ok, Shift, _Status} -> TimeStamp = {Shift div 1000000, Shift rem 1000000, 0}, @@ -1622,6 +1622,13 @@ list_given_users(Users, Prefix, Lang, URLFunc) -> end, Users) )]). +get_lastactivity_module(Server) -> + case lists:member(mod_last, gen_mod:loaded_modules(Server)) of + true -> mod_last; + _ -> mod_last_odbc + end. + + us_to_list({User, Server}) -> exmpp_jid:to_list(User, Server, undefined).