From 666fa18519f387d3ddb5b205b9defb09b55310d5 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Sat, 18 Sep 2021 14:21:41 +1200 Subject: [PATCH] Fix signature_html to return html This seems to be more in line with processor expectations --- Civi/Token/TokenCompatSubscriber.php | 5 ++--- tests/phpunit/CRM/Core/BAO/MessageTemplateTest.php | 12 +++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Civi/Token/TokenCompatSubscriber.php b/Civi/Token/TokenCompatSubscriber.php index 50debc9dc1..92e20b7806 100644 --- a/Civi/Token/TokenCompatSubscriber.php +++ b/Civi/Token/TokenCompatSubscriber.php @@ -310,7 +310,7 @@ class TokenCompatSubscriber implements EventSubscriberInterface { $this->fieldMetadata = (array) civicrm_api4('Contact', 'getfields', ['checkPermissions' => FALSE], 'name'); foreach ($e->getRows() as $row) { - if (empty($row->context['contactId'])) { + if (empty($row->context['contactId']) && empty($row->context['contact'])) { continue; } @@ -344,8 +344,7 @@ class TokenCompatSubscriber implements EventSubscriberInterface { $row->format('text/plain')->tokens('contact', $token, ''); } elseif ($token === 'signature_html') { - $text = html_entity_decode($row->context['contact'][$token]); - $row->format('text/html')->tokens('contact', $token, $value); + $row->format('text/html')->tokens('contact', $token, html_entity_decode($row->context['contact'][$token])); } else { $row->format('text/html') diff --git a/tests/phpunit/CRM/Core/BAO/MessageTemplateTest.php b/tests/phpunit/CRM/Core/BAO/MessageTemplateTest.php index 10ee2b8990..ed303f2734 100644 --- a/tests/phpunit/CRM/Core/BAO/MessageTemplateTest.php +++ b/tests/phpunit/CRM/Core/BAO/MessageTemplateTest.php @@ -360,6 +360,16 @@ emo '; $expected .= $this->getExpectedContactOutput($address['id'], $tokenData, $messageContent['html']); $this->assertEquals($expected, $messageContent['html']); + $textDifferences = [ + '

', + '

', + '', + '', + ]; + foreach ($textDifferences as $html) { + $expected = str_replace($html, '', $expected); + } $this->assertEquals($expected, $messageContent['text']); $checksum_position = strpos($messageContent['subject'], 'cs='); $this->assertTrue($checksum_position !== FALSE); @@ -773,7 +783,7 @@ phone_type:Mobile email:anthony_anderson@civicrm.org on_hold: signature_text:Yours sincerely -signature_html:<p>Yours</p> +signature_html:

Yours

im_provider:1 im:IM Screen Name openid:OpenID -- 2.25.1