[6.x] Fix scheduled and expired status queries when both date behaviors are private - #15577
Open
wakqasahmed wants to merge 1 commit into
Open
wakqasahmed wants to merge 1 commit into
wakqasahmed wants to merge 1 commit into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #13342.
If a dated collection has both its future and past date behavior set to private, filtering the entry listing by Scheduled or Expired always came back empty, even though
Entry::status()correctly reports those entries as scheduled/expired. That's the setup in the issue.The cause is in
QueriesEntryStatus::addCollectionStatusLogicToQuery. The future-private block addedwhere('date', 'invalid')forexpired, and the past-private block added it forscheduled. Those branches already return early when only one side is private, so the extra clauses only ever applied when both sides were private. There they ANDed with the real date constraint and wiped out the results. I removed them. With both private, scheduled is nowdate > nowand expired isdate < now. Published is still empty, which matchesstatus(). Collections with only one private side behave exactly as before.I added a both-private collection (a future and a past entry, plus drafts) to the
it_filters_by_statusprovider inEntryQueryBuilderTest. The new scheduled and expired cases fail on 6.x without the change and pass with it.I left
Filters/Status::options()alone to keep this narrow.