X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=Civi%2FToken%2FTokenCompatSubscriber.php;h=3eaf57d3b7cc6ac6d92ccf948c9647a45825767b;hb=fd6a68282a736516943f7f180cf60c6e6355dbcd;hp=152b5b7ae0fcd05ce6fc8b7bffca0a56e5a45a6f;hpb=4c68b3ac2f3b9539f5d8918632bfd7a460633f04;p=civicrm-core.git diff --git a/Civi/Token/TokenCompatSubscriber.php b/Civi/Token/TokenCompatSubscriber.php index 152b5b7ae0..3eaf57d3b7 100644 --- a/Civi/Token/TokenCompatSubscriber.php +++ b/Civi/Token/TokenCompatSubscriber.php @@ -49,9 +49,10 @@ class TokenCompatSubscriber implements EventSubscriberInterface { $messageTokens = $e->getTokenProcessor()->getMessageTokens(); foreach ($e->getRows() as $row) { + $contactId = $row->context['contactId']; if (empty($row->context['contact'])) { $params = array( - array('contact_id', '=', $row->context['contactId'], 0, 0), + array('contact_id', '=', $contactId, 0, 0), ); list($contact, $_) = \CRM_Contact_BAO_Query::apiQuery($params); $contact = reset($contact); //CRM-4524 @@ -70,16 +71,22 @@ class TokenCompatSubscriber implements EventSubscriberInterface { $contact = array_merge($contact, $row->context['tmpTokenParams']); } + $contactArray = !is_array($contactId) ? array($contactId => $contact) : $contact; + // Note: This is a small contract change from the past; data should be missing // less randomly. //\CRM_Utils_Hook::tokenValues($contact, $row->context['contactId']); - \CRM_Utils_Hook::tokenValues($contact, - $row->context['contactId'], + \CRM_Utils_Hook::tokenValues($contactArray, + (array) $contactId, empty($row->context['mailingJob']) ? NULL : $row->context['mailingJob']->id, $messageTokens, $row->context['controller'] ); + // merge the custom tokens in the $contact array + if (!empty($contactArray[$contactId])) { + $contact = array_merge($contact, $contactArray[$contactId]); + } $row->context('contact', $contact); } }