CRM-21753 - addition of json validation
authoreileen <emcnaughton@wikimedia.org>
Wed, 14 Feb 2018 06:27:43 +0000 (19:27 +1300)
committereileen <emcnaughton@wikimedia.org>
Tue, 27 Mar 2018 07:01:06 +0000 (20:01 +1300)
commit882514391de1955e7bbc89611f28e95424979715
tree05b35447d6272f78f6a1f6f0235e1a45a9270f0d
parent671e1ad8457168a3786d0a5663a342f165322467
CRM-21753 - addition of json validation

Per https://github.com/civicrm/civicrm-core/pull/11658

the dedupe code has a mechanism to handle a nuanced array of criteria.

This PR is purely to support the passing of that json through the url criteria  with
a proposed validation rule.

The criteria in the url might look like

criteria={"contact" : {"first_name" :{"IN" : ["Peter", "Paul", "Mary"]]]}

This is passed to the contact api to limit the contacts to look for matches
for (before actually finding the matches). In discussion the biggest risk seemed to
be the possibility of chaining so I have added a filter on the
criteria & set check_permissions (acls are applied in the next step but
having it on the api call is clearer & may reduce matches for the next step).
CRM/Contact/Page/DedupeFind.php
CRM/Core/BAO/PrevNextCache.php
CRM/Utils/Rule.php
CRM/Utils/Type.php
tests/phpunit/CRM/Utils/TypeTest.php