diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-08-15 23:28:36 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2016-08-15 23:28:36 +0200 |
commit | 20a510d87786155e9bfce068b99660d103dc3494 (patch) | |
tree | cac0e4d0289bdaf0730a4887a5e9ac7b2d4bf978 /src | |
parent | mod_offline: Add 'store_offline_message' hook (diff) |
mod_mam: Add 'store_mam_message' hook
The new 'store_mam_message' hook is invoked whenever a MAM message is
stored.
Diffstat (limited to 'src')
-rw-r--r-- | src/mod_mam.erl | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/mod_mam.erl b/src/mod_mam.erl index 6ea757223..f6d3c8f1f 100644 --- a/src/mod_mam.erl +++ b/src/mod_mam.erl @@ -718,8 +718,14 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) -> case should_archive_peer(C2SState, Prefs, Peer) of true -> US = {LUser, LServer}, - Mod = gen_mod:db_mod(LServer, ?MODULE), - Mod:store(Pkt, LServer, US, chat, Peer, <<"">>, Dir); + case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt, + [LUser, LServer, Peer, chat, Dir]) of + drop -> + pass; + NewPkt -> + Mod = gen_mod:db_mod(LServer, ?MODULE), + Mod:store(NewPkt, LServer, US, chat, Peer, <<"">>, Dir) + end; false -> pass end. @@ -727,10 +733,16 @@ store_msg(C2SState, Pkt, LUser, LServer, Peer, Dir) -> store_muc(MUCState, Pkt, RoomJID, Peer, Nick) -> case should_archive_muc(Pkt) of true -> - LServer = MUCState#state.server_host, {U, S, _} = jid:tolower(RoomJID), - Mod = gen_mod:db_mod(LServer, ?MODULE), - Mod:store(Pkt, LServer, {U, S}, groupchat, Peer, Nick, recv); + LServer = MUCState#state.server_host, + case ejabberd_hooks:run_fold(store_mam_message, LServer, Pkt, + [U, S, Peer, groupchat, recv]) of + drop -> + pass; + NewPkt -> + Mod = gen_mod:db_mod(LServer, ?MODULE), + Mod:store(NewPkt, LServer, {U, S}, groupchat, Peer, Nick, recv) + end; false -> pass end. |