From 578c7a3a452f7c857627e84af9c0e93ac9e5c4fe Mon Sep 17 00:00:00 2001 From: Jon goldberg Date: Mon, 28 Aug 2017 18:50:28 -0400 Subject: [PATCH] CRM-21108 - handle single or multi-dimensional contact detail arrays --- CRM/Utils/Token.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CRM/Utils/Token.php b/CRM/Utils/Token.php index faf9863504..904fa40ad8 100644 --- a/CRM/Utils/Token.php +++ b/CRM/Utils/Token.php @@ -1366,7 +1366,7 @@ class CRM_Utils_Token { $tokenString = CRM_Utils_Token::replaceContactTokens($tokenString, $contactDetails, TRUE, $greetingTokens, TRUE, $escapeSmarty); } - self::removeNullContactTokens($tokenString, $contactDetails[0][$contactId], $greetingTokens); + self::removeNullContactTokens($tokenString, $contactDetails, $greetingTokens); // check if there are any unevaluated tokens $greetingTokens = self::getTokens($tokenString); @@ -1436,6 +1436,11 @@ class CRM_Utils_Token { private static function removeNullContactTokens(&$tokenString, $contactDetails, &$greetingTokens) { $greetingTokensOriginal = $greetingTokens; $contactFieldList = CRM_Contact_DAO_Contact::fields(); + // Sometimes contactDetails are in a multidemensional array, sometimes a + // single-dimension array. + if (array_key_exists(0, $contactDetails) && is_array($contactDetails[0])) { + $contactDetails = current($contactDetails[0]); + } $nullFields = array_keys(array_diff_key($contactFieldList, $contactDetails)); // Handle legacy tokens -- 2.25.1