CRM-18656 Advanced search fails to show tagset criteria #8432
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.
When editing a saved search, tagset criteria don't show.
This occurs because on the form the tagsets are displayed separately to other tags, while in the saved search they are all stored together. When retrieved from the saved search, the tagset tags need to be separated again.
The function that 'normalises' the tags so they are all stored together in the saved search is CRM_Contact_Form_Search_Advanced::normalizeFormValues(). On the form, normal tags are stored in an element named 'contact_tags' while tagset tags are stored in elements named 'contact_taglist[23]' where '23' is the Id of the tagset. normalizeFormValues() converts them all to parameters with name 'contact_tags' (the queries can use the IN operator on all the tag values: they don't care about tagsets).
What's needed is some code that reverses this. This patch ...