diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-12-20 13:25:53 +0100 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-12-20 13:28:18 +0100 |
commit | 69a986a09ebfeacd2d662ed5932d25ef29dca276 (patch) | |
tree | ded64e89b5561fb0af786b744b6e2dde9f55ecba /src | |
parent | Fix PIEFXIS export of user when password is scrammed (#2721) (diff) |
Add option to mod_offline that would allow storing group chat messages
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_offline.erl | 28 |
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}]. |