Merge pull request #816 from mailpoet/utf8_renderer_fix
Fixed UTF-8 encoding in renderer on PHP 5.3 [MAILPOET-812]
This commit is contained in:
@ -186,7 +186,7 @@ class RoboFile extends \Robo\Tasks {
|
|||||||
'./vendor/bin/phpcs '.
|
'./vendor/bin/phpcs '.
|
||||||
'--standard=./tasks/code_sniffer/MailPoet '.
|
'--standard=./tasks/code_sniffer/MailPoet '.
|
||||||
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
|
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
|
||||||
'./lib/Config/PopulatorData/Templates/* '.
|
'./lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '.
|
||||||
'lib/ '.
|
'lib/ '.
|
||||||
$severityFlag
|
$severityFlag
|
||||||
);
|
);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
namespace MailPoet\Newsletter\Renderer\Blocks;
|
namespace MailPoet\Newsletter\Renderer\Blocks;
|
||||||
|
|
||||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||||
|
use MailPoet\Util\pQuery\pQuery;
|
||||||
|
|
||||||
class Footer {
|
class Footer {
|
||||||
static function render($element) {
|
static function render($element) {
|
||||||
@ -10,7 +11,7 @@ class Footer {
|
|||||||
$line_height = sprintf(
|
$line_height = sprintf(
|
||||||
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
||||||
);
|
);
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($element['text']);
|
$DOM = $DOM_parser->parseStr($element['text']);
|
||||||
if(isset($element['styles']['link'])) {
|
if(isset($element['styles']['link'])) {
|
||||||
$links = $DOM->query('a');
|
$links = $DOM->query('a');
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
namespace MailPoet\Newsletter\Renderer\Blocks;
|
namespace MailPoet\Newsletter\Renderer\Blocks;
|
||||||
|
|
||||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||||
|
use MailPoet\Util\pQuery\pQuery;
|
||||||
|
|
||||||
class Header {
|
class Header {
|
||||||
static function render($element) {
|
static function render($element) {
|
||||||
@ -10,7 +11,7 @@ class Header {
|
|||||||
$line_height = sprintf(
|
$line_height = sprintf(
|
||||||
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
||||||
);
|
);
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($element['text']);
|
$DOM = $DOM_parser->parseStr($element['text']);
|
||||||
if(isset($element['styles']['link'])) {
|
if(isset($element['styles']['link'])) {
|
||||||
$links = $DOM->query('a');
|
$links = $DOM->query('a');
|
||||||
|
@ -3,6 +3,7 @@ namespace MailPoet\Newsletter\Renderer\Blocks;
|
|||||||
|
|
||||||
use MailPoet\Newsletter\Editor\PostContentManager;
|
use MailPoet\Newsletter\Editor\PostContentManager;
|
||||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||||
|
use MailPoet\Util\pQuery\pQuery;
|
||||||
|
|
||||||
class Text {
|
class Text {
|
||||||
static function render($element) {
|
static function render($element) {
|
||||||
@ -25,7 +26,7 @@ class Text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function convertBlockquotesToTables($html) {
|
static function convertBlockquotesToTables($html) {
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($html);
|
$DOM = $DOM_parser->parseStr($html);
|
||||||
$blockquotes = $DOM->query('blockquote');
|
$blockquotes = $DOM->query('blockquote');
|
||||||
foreach($blockquotes as $blockquote) {
|
foreach($blockquotes as $blockquote) {
|
||||||
@ -70,7 +71,7 @@ class Text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function convertParagraphsToTables($html) {
|
static function convertParagraphsToTables($html) {
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($html);
|
$DOM = $DOM_parser->parseStr($html);
|
||||||
$paragraphs = $DOM->query('p');
|
$paragraphs = $DOM->query('p');
|
||||||
if(!$paragraphs->count()) return $html;
|
if(!$paragraphs->count()) return $html;
|
||||||
@ -134,7 +135,7 @@ class Text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function styleLists($html) {
|
static function styleLists($html) {
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($html);
|
$DOM = $DOM_parser->parseStr($html);
|
||||||
$lists = $DOM->query('ol, ul, li');
|
$lists = $DOM->query('ol, ul, li');
|
||||||
if(!$lists->count()) return $html;
|
if(!$lists->count()) return $html;
|
||||||
@ -153,7 +154,7 @@ class Text {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function styleHeadings($html) {
|
static function styleHeadings($html) {
|
||||||
$DOM_parser = new \pQuery();
|
$DOM_parser = new pQuery();
|
||||||
$DOM = $DOM_parser->parseStr($html);
|
$DOM = $DOM_parser->parseStr($html);
|
||||||
$headings = $DOM->query('h1, h2, h3, h4');
|
$headings = $DOM->query('h1, h2, h3, h4');
|
||||||
if(!$headings->count()) return $html;
|
if(!$headings->count()) return $html;
|
||||||
|
@ -3,10 +3,11 @@ namespace MailPoet\Newsletter\Renderer\PostProcess;
|
|||||||
|
|
||||||
use MailPoet\Newsletter\Links\Links;
|
use MailPoet\Newsletter\Links\Links;
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
|
use MailPoet\Util\pQuery\pQuery;
|
||||||
|
|
||||||
class OpenTracking {
|
class OpenTracking {
|
||||||
static function process($template) {
|
static function process($template) {
|
||||||
$DOM = new \pQuery();
|
$DOM = new pQuery();
|
||||||
$DOM = $DOM->parseStr($template);
|
$DOM = $DOM->parseStr($template);
|
||||||
$template = $DOM->query('body');
|
$template = $DOM->query('body');
|
||||||
// url is a temporary data tag that will be further replaced with
|
// url is a temporary data tag that will be further replaced with
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Newsletter\Renderer;
|
namespace MailPoet\Newsletter\Renderer;
|
||||||
|
|
||||||
|
use MailPoet\Util\pQuery\pQuery;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
class Renderer {
|
class Renderer {
|
||||||
@ -19,7 +21,7 @@ class Renderer {
|
|||||||
$this->preview = $preview;
|
$this->preview = $preview;
|
||||||
$this->blocks_renderer = new Blocks\Renderer($this->newsletter, $this->preview);
|
$this->blocks_renderer = new Blocks\Renderer($this->newsletter, $this->preview);
|
||||||
$this->columns_renderer = new Columns\Renderer();
|
$this->columns_renderer = new Columns\Renderer();
|
||||||
$this->DOM_parser = new \pQuery();
|
$this->DOM_parser = new pQuery();
|
||||||
$this->CSS_inliner = new \MailPoet\Util\CSS();
|
$this->CSS_inliner = new \MailPoet\Util\CSS();
|
||||||
$this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
|
$this->template = file_get_contents(dirname(__FILE__) . '/' . self::NEWSLETTER_TEMPLATE);
|
||||||
}
|
}
|
||||||
|
27
lib/Util/pQuery/pQuery.php
Normal file
27
lib/Util/pQuery/pQuery.php
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace MailPoet\Util\pQuery;
|
||||||
|
|
||||||
|
// extend pQuery class to use UTF-8 encoding when getting elements' inner/outer text
|
||||||
|
class pQuery extends \pQuery {
|
||||||
|
public static function parseStr($html) {
|
||||||
|
$parser = new Html5Parser($html);
|
||||||
|
return $parser->root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Html5Parser extends \pQuery\HtmlParser {
|
||||||
|
var $root = 'MailPoet\Util\pQuery\DomNode';
|
||||||
|
}
|
||||||
|
|
||||||
|
class DomNode extends \pQuery\DomNode {
|
||||||
|
var $childClass = 'MailPoet\Util\pQuery\DomNode';
|
||||||
|
|
||||||
|
function getInnerText() {
|
||||||
|
return html_entity_decode($this->toString(true, true, 1), ENT_QUOTES, 'UTF-8');
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOuterText() {
|
||||||
|
return html_entity_decode($this->toString(), ENT_QUOTES, 'UTF-8');
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user