{Msgs, true, L}
end;
select(LServer, JidRequestor, JidArchive, Query, RSM, MsgType) ->
- Mod = gen_mod:db_mod(LServer, ?MODULE),
- Mod:select(LServer, JidRequestor, JidArchive, Query, RSM, MsgType).
+ case might_expose_jid(JidRequestor, Query, MsgType) of
+ true ->
+ {[], true, 0};
+ false ->
+ Mod = gen_mod:db_mod(LServer, ?MODULE),
+ Mod:select(LServer, JidRequestor, JidArchive, Query, RSM, MsgType)
+ end.
msg_to_el(#archive_msg{timestamp = TS, packet = El, nick = Nick,
peer = Peer, id = ID},
match_rsm(_Now, _) ->
true.
+might_expose_jid(JidRequestor, Query, {groupchat, Role,
+ #state{config = #config{anonymous = true}}})
+ when Role /= moderator ->
+ case proplists:get_value(with, Query) of
+ undefined ->
+ false;
+ With ->
+ case {jid:remove_resource(jid:tolower(With)),
+ jid:remove_resource(jid:tolower(JidRequestor))} of
+ {J, J} ->
+ false;
+ _ ->
+ true
+ end
+ end;
+might_expose_jid(_JidRequestor, _Query, _MsgType) ->
+ false.
+
get_jids(undefined) ->
[];
get_jids(Js) ->