Guard against passing empty values to CRM_Core_DAO::getFieldValue() #21998
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
This PR fixes a minor regression introduced in #18941 whereby empty values could be passed to CRM_Core_DAO::getFieldValue() which would throw an exception.
This change removes a potential "getFieldValue failed" error that can be thrown if an empty scalar value occurs in a multiple-contact reference custom field.
See https://lab.civicrm.org/dev/core/-/issues/2939
Replaces eileenmcnaughton#13 which was opened against the wrong repo.
Before
When submitting a record that includes a custom field of multiple contact reference type, if that field is empty (i.e. no contacts), an error message "getFieldValue failed" sometimes occurs and the screen freezes and needs to be reloaded. This would be due to the specific data present in the field (zero vs null vs empty array etc).
After
Defensive coding prevents empty values being passed to CRM_Core_DAO::getFieldValue(), so no exception occurs and record update proceeds as expected without any error.
Comments
Demonstrated working on live CiviCRM installation 5.37.0.