aboutsummaryrefslogtreecommitdiff
path: root/src/mod_offline_odbc.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2008-10-12 14:16:05 +0000
committerBadlop <badlop@process-one.net>2008-10-12 14:16:05 +0000
commit2af52abdba99f6bde715f4cbbeac37727fc8d978 (patch)
tree257de032aadc13bcba9923ab9b6cc998e0b4a89a /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.erl24
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