Fix Direct Message Filter "Received by" & add "With Participant"

Facula

Well-known member
Licensed customer
I'll be honest, this one has been a thorn in my side since I started using XF way back in the early days.

This never has worked the way I expected it to. It is maddening to me. Because it has always been missing the ability to search for conversations with a specific participant. Honestly that's all I have ever really wanted to filter for.

Additionally, and more maddening, is that "Received by" does not operate logically.

These are the filtering options.

1784606283649.webp

"Started by" only includes convos that someone initiated - that means, the first message in the convo is from them to you. This can also be messages that YOU started (if you enter yourself). But you can't filter by the recipient of a convo you started. That's fine though.

"Received by" includes any convo where YOU sent someone a message (e.g. they received it). This can be a convo that you started with someone else, or a convo which contains a message where you replied to them (including one that they started and you replied to). When you use this one, you get both 1) convos you started with someone else, and 2) any other convo in which they received a reply from you. That's not what I want or expect. If "Received by" is supposed to be the opposite of "Started by" (that's the implication made by having those 2 options), then "Received by" should only return convos that were started by the target user.

The way this currently and always has worked, quite honestly, trips my logic OCD circuit breaker so incredibly hard whenever I have to use it.

My problem is that sometimes, I cannot recall who started the convo and if they replied. But I remember there was one. So, I have to try both ways. Too many clicks, backs, drop down, radio button, type the name again, click filter. And then, the unexpected results. I swear...every time, I go mad. It took me writing this to really work out the logic, and I had to sit here and monkey with it to verify that it indeed does work like described above, and I am not absolutely insane.

So, that's the #1 item. Is it a bug? No, it's a design flaw (in my opinion). It works as designed. So that is part 1 of my suggestion - change "Received by" to be limited to only convos initiated to another user. Note that I said "to another user" and not "by you, to another user". This is perhaps another layer to consider, but for example, if someone else starts a convo with you and 4 other users, technically, that convo that you got included on was also received by the target user (but you didn't start it). Yet another potential unintended result.

Item #2: However all I really came here to request (after all of that....) was this: the ability to filter by any convo with a specific participant, whether or not they replied. So, I just want another radio button option for "With Participant"

These to changes to the core function will make my life complete. Ok maybe not but it will certainly take me one step closer, by preventing the constant logic OCD circuit breaker tripping.

Thank you for reading. I feel better getting this all out.
 
Upvote 6
"Received by" isn't broken exactly, it's just not doing what its name says. It checks whether the person is a recipient on the conversation at all. It doesn't care who started it, if you ever personally replied to them, or if they've since left the conversation. So in a weird way, the "With participant" option you're asking for already exists - it's just hiding behind a misleading label.

As you've mentioned, the real gap is that there's no way to search "conversations THIS person started with me" without it also dragging in every group chat you're both sitting in.
 
This bugged me also, there's a post or bug report by me I am sure, many years ago I edited the language to the below.

1784654533515.webp
 
So in a weird way, the "With participant" option you're asking for already exists - it's just hiding behind a misleading label.
Partially. Not exactly.

"With Participant" basically is both options combined, sort of. We can agree on that.

But, by your rationale, if "Received by" is working properly, then "Started by" is broken, in the reverse way - "Started by" should return any convo with a target participant that has sent you a message (including the first message, or a reply in the message chain).

Either way, it is a design flaw, in my opinion.

So, technically, if this filter function were really to be improved, there should be methods to filter by the following parameters:

1) Convos you started with Target (first message only) - can't do this now, this is the "Received by" part that get you the unanticipated dual results
2) Convos by Target with you (first message only) - this is the current "Started by" function, as long as you put in someone else
3) Convos containing target - can't do this now via a single action, because convos with only the first message only show up in one of the 2 options, as I described (the part that drive me bats)

or if they've since left the conversation
#3 would capture any convo with the Target member as a participant, and now to amend this, OR a convo in which they sent a message (regardless of whether or not they have subsequently left the convo). I don't think there is a way to check if someone "has ever participlated" in a convo, because once they leave the convo, and if they check "do not allow future messages", that actually removes them from the database as a participant (and then once all participants leave, it is pruned)
 
@Facula
 
Oh my OCD breaker just tripped
I used the word recipient. Perhaps the word "participant" is clearer. It literally searches for PMs where the name you search for is a participant. Doesn't matter who sent it, who started it. If they're a participant in the conversation they will come up.
That is INCORRECT

If someone sends me a message, then both of us are participants. But if I have not responded and search for "received by" and put the other person, that one does not show up.
 
More to add to the breaker trip

I don't usually use the advanced serach for messages. But now I tried.

Example, I started a convo with a user, they have not replied. I go to advanced search and put them in both fields, no results

There's no way to just search messages for a convo with a specific participant

Now it's even worse!

To make mattes EVEN worse, if i try to search by just "received by" it give me this error

Oops! We ran into some problems.
Please specify a search query or the name of a member.
Bro please I did. You can't tell me this is "expected" because if I only enter a "posted by" name (and nothing in Keywords) it works (when such messages exist)
 
Last edited:
Did I describe this in a way that is just completely not understandable?

It works exactly as I describe and you can test it easily.

Do I need to make a video about how it actually works vs how I expect it to work?

...or am I (and @beerForo) just completely crazy? Because I tried explaining this to someone by pointing them to this thread and they don't get what I'm pointing out.
 
To make mattes EVEN worse, if i try to search by just "received by" it give me this error

Oops! We ran into some problems.
Please specify a search query or the name of a member.
Bro please I did. You can't tell me this is "expected" because if I only enter a "posted by" name (and nothing in Keywords) it works (when such messages exist)

I believe this part actually constitutes a bug
 
The way I understand what you are saying:

If someone else adds you to a conversation, but you don't reply. There is no way for you get to that conversation via search using any of the current filters, given you know the username who added/sent you the conversation.

Meanwhile the way the current filters are worded, you would expect the conversation to appear in the results.
 
To make mattes EVEN worse, if i try to search by just "received by" it give me this error


Bro please I did. You can't tell me this is "expected" because if I only enter a "posted by" name (and nothing in Keywords) it works (when such messages exist)
This is IMHO not a bug but a general limitation of the search system.

For example if you go to https://xenforo.com/community/search/?type=post and try to search only for posts Newer than you will get the exact same error message - either a keyword or a from username must always be specified; all other fields can only be additional to that.
Or if you go to https://xenforo.com/community/search/?type=profile_post and try to search only by Posted on the profile of member.

This means that it is currently not possible to search for direct messages received by a specific user if you don't also specify either keywords or the conversation starter.
 
Conversation is used a lot in my forum, I don't have these limitations at all, but I also use XenForo Enhanced Search, Search Improvements and Conversation Essentials from Xon and I can only recommend it to anyone who wants to keep their inbox organized.
 
This is IMHO not a bug but a general limitation of the search system.

For example if you go to https://xenforo.com/community/search/?type=post and try to search only for posts Newer than you will get the exact same error message - either a keyword or a from username must always be specified; all other fields can only be additional to that.
Or if you go to https://xenforo.com/community/search/?type=profile_post and try to search only by Posted on the profile of member.

This means that it is currently not possible to search for direct messages received by a specific user if you don't also specify either keywords or the conversation starter.
OK now try going to advance search, search DMs and add a name to “posted by” without any keywords. You get results, if you have DMs that match that query

Only add a name to “received by” and you do not

By your description, neither of those should work

EDIT: I kinda see what you’re saying now
 
The way I understand what you are saying:

If someone else adds you to a conversation, but you don't reply. There is no way for you get to that conversation via search using any of the current filters, given you know the username who added/sent you the conversation.

Meanwhile the way the current filters are worded, you would expect the conversation to appear in the results.

Conversation is used a lot in my forum, I don't have these limitations at all, but I also use XenForo Enhanced Search, Search Improvements and Conversation Essentials from Xon and I can only recommend it to anyone who wants to keep their inbox organized.
I have ConvEss and that does not change anything.

Just try this. set up a test environment. Consider yourself user A.

Convo #1) user A sends a message to user B. User B does not reply.

Convo #2) user B sends a message to user A. User A does not reply

Convo #3) Same as #1, except you should be replies.

Convo #4) same as #2 except user replies

Try various search parameters as described.

Now expand this data set by adding other people to the conversation and then leaving it for having multiple people reply or not reply and leave the conversations, etc

I have enough conversations in my inbox that meet all of these requirements and I can tell you that it works the way I describe. It is unexpected and it drives me bats^%%# crazy.
 
The only ones I can't find with the search are in the trash can; the search function doesn't work there.

For example if you go to https://xenforo.com/community/search/?type=post and try to search only for posts Newer than you will get the exact same error message - either a keyword or a from username must always be specified; all other fields can only be additional to that.
Or if you go to https://xenforo.com/community/search/?type=profile_post and try to search only by Posted on the profile of member.
Only in the standard configuration; in my setup, (XenForo Enhanced Search, Search Improvements and Conversation Essentials) it works perfectly fine without anything. Even the guest can use it at my place.
 
Maybe a better way to explain this

Started by filter: results in convos started by target user (first message only).

This is the default function, which in my opinion, works as expected (y)

----------------

Received by filter: implies the reverse of Started by, meaning: you started a convo with User X (they received it).

This search result (for User X) should only return results of convos you started with User X (first message only)

As the current core functions, that is not the result and there is no debate about this. Try it. Just try it.

The resulting output is any convo containing any message that was sent to User X (received by User X)
(note: this may also capture any message in a 3+ participant convo where another user in the convo sent a message, which would be considered "Received by" User X, even if you never actually posted a message in that convo - I need to test that one)

Do you see now?

The correct description of the Received by function is something like Contains message to. Because that is the result of applying the filter.

Example: User X initiates a convo with me. I send a reply. This convo now shows up in the results of filtering by Received by. Don't believe me? Try it. I just tried it. On here. It works like that.

----------------

Participant

This is the part I have always wanted and it does. not. exist. in. the. core.

However there are distinct cases here

1) Current participant
2) Not a current participant, but have messages in the convo (left the convo permanently)

Here's the burn. If I send a message to User X, and they never responded and permanently left the convo, would any search show that convo as a result? I might want to search for that, but I would have to search all messages for recipients, not convo participants. I'm not sure if that would work properly in certain situations. I used to know how the DB works here, it's been a while since I looked at the tables but I had to do a manual conversion of DotNetNuke to XF back in 2014 that took me 2 weeks of manual manipulation of table in Excel and importing those into mysql but that was a while ago.

I just dove down a rabbit hole on the tables and now I'm not exactly sure of the algorithm used to spit out the "Received by" result, all I know is that it is not as expected.
 
Last edited:
Example: User X initiates a convo with me. I send a reply. This convo now shows up in the results of filtering by Received by. Don't believe me? Try it. I just tried it. On here. It works like that.


When I filter for "Received by" and "Xon", this is the result

1784847525957.webp


Xon started this convo with me. I replied. Therefore he is "the recipient" of a message within that convo.

1784847733417.webp

This is the unexpected result I am talking about, it's so easy to replicate.

Will someone on the XF dev team please pay attention to this?
 
Back
Top Bottom