replaceGreetingTokens - Be more forgiving about $contactDetails
authorTim Otten <totten@civicrm.org>
Fri, 15 Oct 2021 07:42:28 +0000 (00:42 -0700)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 23 Oct 2021 00:13:15 +0000 (13:13 +1300)
This should fix a failure in `TokenConsistencyTest`. Setting a breakpoint and monitoring
`$contactDetails`, it appears that the data would come in multiple formats. (Sometimes as
a nested array; sometimes as a flatter array.) This makes it work with both cases.

CRM/Utils/Token.php

index 2f7db99438a6cce9607fb17f10eb609d24cce330..53cebfafc0b5a87ccbef84e336d6fa54bdec8074 100644 (file)
@@ -1337,10 +1337,7 @@ class CRM_Utils_Token {
     $greetingTokens = self::getTokens($tokenString);
     $context = $contactId ? ['contactId' => $contactId] : [];
     if ($contactDetails) {
-      foreach ($contactDetails[0] as $contact) {
-        // Only 1 - the loop is because we may not know the id.
-        $context['contact'] = $contact;
-      }
+      $context['contact'] = isset($contactDetails[0]) ? reset($contactDetails[0]) : $contactDetails;
     }
     $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
       'smarty' => FALSE,