Skip to content

[5.x] Prevents Recursive Fieldsets#9539

Merged
jasonvarga merged 32 commits intostatamic:masterfrom
JohnathonKoster:1725--recursive-fieldsets-infinite-loop
Apr 15, 2024
Merged

[5.x] Prevents Recursive Fieldsets#9539
jasonvarga merged 32 commits intostatamic:masterfrom
JohnathonKoster:1725--recursive-fieldsets-infinite-loop

Conversation

@JohnathonKoster
Copy link
Copy Markdown
Contributor

@JohnathonKoster JohnathonKoster commented Feb 18, 2024

This PR closes #1725 by returning early if we've already seen a fieldset's handle. This PR targets 5.x since it changes some constructions and public method signatures,

Currently it logs a warning instead of throwing an exception, but this could be easily changed. If this direction looks correct, I will work on getting the UI updated to also not attempt to recursively process includes (this could also be sidestepped by just throwing an exception).

Will add docs issue depending on which direction is desired here (log and fix UI, just throw an exception, no change for now) 🙂

@duncanmcclean duncanmcclean changed the base branch from 4.x to master February 18, 2024 20:45
@duncanmcclean
Copy link
Copy Markdown
Member

Since this PR is for v5, I've changed the target branch to master. Would you be able to rebase your branch with the latest changes from master?

duncanmcclean and others added 28 commits February 18, 2024 15:08
Copy link
Copy Markdown
Member

@jasonvarga jasonvarga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've adjusted this so it can be done without any breaking changes.

  • Wasn't a fan of passing around an array and changing method signatures, so I'm using a singleton to track state.
  • There is now validation when saving a blueprint or fieldset that should prevent you from getting into a recursive situation to begin with.
  • If you happen to get into recursion somehow, there is now a detailed exception, rather than a log and trying to filter out fields.

@jasonvarga jasonvarga merged commit 54a0496 into statamic:master Apr 15, 2024
@jasonvarga jasonvarga deleted the 1725--recursive-fieldsets-infinite-loop branch April 15, 2024 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

Handle infinite recursion when importing fieldsets into fieldsets

7 participants