aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2018-12-20 13:25:53 +0100
committerPaweł Chmielowski <pchmielowski@process-one.net>2018-12-20 13:28:18 +0100
commit69a986a09ebfeacd2d662ed5932d25ef29dca276 (patch)
treeded64e89b5561fb0af786b744b6e2dde9f55ecba
parentFix PIEFXIS export of user when password is scrammed (#2721) (diff)
Add option to mod_offline that would allow storing group chat messages
-rw-r--r--src/mod_offline.erl28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index 53e437020..c4fc49de0 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -374,16 +374,25 @@ need_to_store(LServer, #message{type = Type} = Packet) ->
true;
no_store ->
false;
- none when Type == headline ->
- false;
none ->
- case gen_mod:get_module_opt(
- LServer, ?MODULE, store_empty_body) of
- true ->
+ Store = case Type of
+ groupchat ->
+ gen_mod:get_module_opt(
+ LServer, ?MODULE, store_groupchat);
+ headline ->
+ false;
+ _ ->
+ true
+ end,
+ case {Store, gen_mod:get_module_opt(
+ LServer, ?MODULE, store_empty_body)} of
+ {false, _} ->
+ false;
+ {_, true} ->
true;
- false ->
+ {_, false} ->
Packet#message.body /= [];
- unless_chat_state ->
+ {_, unless_chat_state} ->
not misc:is_standalone_chat_state(Packet)
end
end;
@@ -837,6 +846,8 @@ import(LServer, {sql, _}, DBType, <<"spool">>,
mod_opt_type(access_max_user_messages) ->
fun acl:shaper_rules_validator/1;
mod_opt_type(db_type) -> fun(T) -> ejabberd_config:v_db(?MODULE, T) end;
+mod_opt_type(store_groupchat) ->
+ fun(V) when is_boolean(V) -> V end;
mod_opt_type(store_empty_body) ->
fun (V) when is_boolean(V) -> V;
(unless_chat_state) -> unless_chat_state
@@ -845,4 +856,5 @@ mod_opt_type(store_empty_body) ->
mod_options(Host) ->
[{db_type, ejabberd_config:default_db(Host, ?MODULE)},
{access_max_user_messages, max_user_offline_messages},
- {store_empty_body, unless_chat_state}].
+ {store_empty_body, unless_chat_state},
+ {store_groupchat, false}].