From 0394baaa7a695676749ec22cbc0dd0ffe68068b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Fri, 21 Sep 2018 16:37:52 +0200 Subject: [PATCH] Allow changing invitation message from muc_invite hook --- src/mod_muc_room.erl | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 87a89b498..c4470968c 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -860,7 +860,7 @@ process_normal_message(From, #message{lang = Lang} = Pkt, StateData) -> {ok, [#muc_invite{}|_] = Invitations} -> lists:foldl( fun(Invitation, AccState) -> - process_invitation(From, Invitation, Lang, AccState) + process_invitation(From, Pkt, Invitation, Lang, AccState) end, StateData, Invitations); {ok, [{role, participant}]} -> process_voice_request(From, Pkt, StateData); @@ -873,9 +873,9 @@ process_normal_message(From, #message{lang = Lang} = Pkt, StateData) -> StateData end. --spec process_invitation(jid(), muc_invite(), binary(), state()) -> state(). -process_invitation(From, Invitation, Lang, StateData) -> - IJID = route_invitation(From, Invitation, Lang, StateData), +-spec process_invitation(jid(), message(), muc_invite(), binary(), state()) -> state(). +process_invitation(From, Pkt, Invitation, Lang, StateData) -> + IJID = route_invitation(From, Pkt, Invitation, Lang, StateData), Config = StateData#state.config, case Config#config.members_only of true -> @@ -4192,8 +4192,8 @@ check_invitation(From, Invitations, Lang, StateData) -> {error, xmpp:err_not_allowed(Txt, Lang)} end. --spec route_invitation(jid(), muc_invite(), binary(), state()) -> jid(). -route_invitation(From, Invitation, Lang, StateData) -> +-spec route_invitation(jid(), message(), muc_invite(), binary(), state()) -> jid(). +route_invitation(From, Pkt, Invitation, Lang, StateData) -> #muc_invite{to = JID, reason = Reason} = Invitation, Invite = Invitation#muc_invite{to = undefined, from = From}, Password = case (StateData#state.config)#config.password_protected of @@ -4232,10 +4232,12 @@ route_invitation(From, Invitation, Lang, StateData) -> type = normal, body = xmpp:mk_text(Body), sub_els = [XUser, XConference]}, - ejabberd_hooks:run(muc_invite, StateData#state.server_host, - [StateData#state.jid, StateData#state.config, - From, JID, Reason]), - ejabberd_router:route(Msg), + Msg2 = ejabberd_hooks:run_fold(muc_invite, + StateData#state.server_host, + Msg, + [StateData#state.jid, StateData#state.config, + From, JID, Reason, Pkt]), + ejabberd_router:route(Msg2), JID. %% Handle a message sent to the room by a non-participant.