diff options
author | Badlop <badlop@process-one.net> | 2008-10-12 14:16:05 +0000 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2008-10-12 14:16:05 +0000 |
commit | 2af52abdba99f6bde715f4cbbeac37727fc8d978 (patch) | |
tree | 257de032aadc13bcba9923ab9b6cc998e0b4a89a /src/mod_offline_odbc.erl | |
parent | * src/web/ejabberd_web_admin.erl: Improve Web Admin navigation (diff) |
* src/web/ejabberd_web_admin.erl: Run new hook
webadmin_user_parse_query when POST in web admin user
page (thanks to Oleg Palij)(EJAB-747)
* src/mod_offline.erl: Add button "Remove All Offline Messages" in
a user page (thanks to Oleg Palij)(EJAB-747)
* src/mod_offline_odbc.erl: Likewise
SVN Revision: 1643
Diffstat (limited to '')
-rw-r--r-- | src/mod_offline_odbc.erl | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/mod_offline_odbc.erl b/src/mod_offline_odbc.erl index 80452d8af..85b61fcb5 100644 --- a/src/mod_offline_odbc.erl +++ b/src/mod_offline_odbc.erl @@ -38,7 +38,8 @@ pop_offline_messages/3, remove_user/2, webadmin_page/3, - webadmin_user/4]). + webadmin_user/4, + webadmin_user_parse_query/5]). -include("ejabberd.hrl"). -include("jlib.hrl"). @@ -63,6 +64,8 @@ start(Host, Opts) -> ?MODULE, webadmin_page, 50), ejabberd_hooks:add(webadmin_user, Host, ?MODULE, webadmin_user, 50), + ejabberd_hooks:add(webadmin_user_parse_query, Host, + ?MODULE, webadmin_user_parse_query, 50), MaxOfflineMsgs = gen_mod:get_opt(user_max_messages, Opts, infinity), register(gen_mod:get_module_proc(Host, ?PROCNAME), spawn(?MODULE, init, [Host, MaxOfflineMsgs])). @@ -149,6 +152,8 @@ stop(Host) -> ?MODULE, webadmin_page, 50), ejabberd_hooks:delete(webadmin_user, Host, ?MODULE, webadmin_user, 50), + ejabberd_hooks:delete(webadmin_user_parse_query, Host, + ?MODULE, webadmin_user_parse_query, 50), Proc = gen_mod:get_module_proc(Host, ?PROCNAME), exit(whereis(Proc), stop), ok. @@ -439,7 +444,22 @@ webadmin_user(Acc, User, Server, Lang) -> 0 end, FQueueLen = [?AC("queue/", QueueLen)], - Acc ++ [?XCT("h3", "Offline Messages:")] ++ FQueueLen. + Acc ++ [?XCT("h3", "Offline Messages:")] ++ FQueueLen ++ [?C(" "), ?INPUTT("submit", "removealloffline", "Remove All Offline Messages")]. + +webadmin_user_parse_query(_, "removealloffline", User, Server, _Query) -> + case catch odbc_queries:del_spool_msg(Server, User) of + {'EXIT', Reason} -> + ?ERROR_MSG("Failed to remove offline messages: ~p", [Reason]), + {stop, error}; + {error, Reason} -> + ?ERROR_MSG("Failed to remove offline messages: ~p", [Reason]), + {stop, error}; + _ -> + ?INFO_MSG("Removed all offline messages for ~s@~s", [User, Server]), + {stop, ok} + end; +webadmin_user_parse_query(Acc, _Action, _User, _Server, _Query) -> + Acc. %% ------------------------------------------------ %% mod_offline: number of messages quota management |