dev/core#2501 - api uf_group.create overwrites existing fields when updating if they aren't specified #19995
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.
Overview
https://lab.civicrm.org/dev/core/-/issues/2501
There are several fields that UFGroup::add() sets to FALSE if you don't specify, so for example updating just the title disables your profile because it sets is_active to 0. I can't think why this would be intentional and looking back through the history there doesn't seem to be a reason I can find.
To reproduce:
cv api uf_group.create id=15 title=testing
, where id is the profile id. Or use api explorer.Before
is_active, the setting for whether to offer cms user creation, mapping, etc, all get turned off.
After
As expected and the way other api calls work.
Technical Details
There are two additional parameters that have different names than their fields, so we need to keep that, but currently they overwrite with null if they're missing. But you might want to blank out a field, so we need to treat missing differently than empty.
Comments
Has test.