location tokens should return primary location type
Using location tokens with the Email API extension is non-deterministic; e.g. using the {contact.street_address}
when the contact has multiple addresses will return one semi-randomly. We should always return the primary address/email/phone.
My change adds the default values for all the arguments to CRM_Contact_BAO_Query::apiQuery()
except the last, which is $primaryLocationOnly
. CRM_Contact_BAO_Query::apiQuery()
generates a SQL query, then returns the results of that query. On my test contact, I had 4 phone numbers, 4 emails, and 5 addresses - the query returns 80 (445) results, except it's limited to the first 25. It then returns the 25th result. So e.g. adding a phone number can change the address returned.
This patch is both more performant (we only go once through the while
loop) and will always return the primary location types.