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 '.
|
||||
'--standard=./tasks/code_sniffer/MailPoet '.
|
||||
'--ignore=./lib/Util/Sudzy/*,./lib/Util/CSS.php,./lib/Util/XLSXWriter.php,'.
|
||||
'./lib/Config/PopulatorData/Templates/* '.
|
||||
'./lib/Util/pQuery/*,./lib/Config/PopulatorData/Templates/* '.
|
||||
'lib/ '.
|
||||
$severityFlag
|
||||
);
|
||||
|
@ -2,6 +2,7 @@
|
||||
namespace MailPoet\Newsletter\Renderer\Blocks;
|
||||
|
||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||
use MailPoet\Util\pQuery\pQuery;
|
||||
|
||||
class Footer {
|
||||
static function render($element) {
|
||||
@ -10,7 +11,7 @@ class Footer {
|
||||
$line_height = sprintf(
|
||||
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
||||
);
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($element['text']);
|
||||
if(isset($element['styles']['link'])) {
|
||||
$links = $DOM->query('a');
|
||||
|
@ -2,6 +2,7 @@
|
||||
namespace MailPoet\Newsletter\Renderer\Blocks;
|
||||
|
||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||
use MailPoet\Util\pQuery\pQuery;
|
||||
|
||||
class Header {
|
||||
static function render($element) {
|
||||
@ -10,7 +11,7 @@ class Header {
|
||||
$line_height = sprintf(
|
||||
'%spx', StylesHelper::$line_height_multiplier * (int)$element['styles']['text']['fontSize']
|
||||
);
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($element['text']);
|
||||
if(isset($element['styles']['link'])) {
|
||||
$links = $DOM->query('a');
|
||||
|
@ -3,6 +3,7 @@ namespace MailPoet\Newsletter\Renderer\Blocks;
|
||||
|
||||
use MailPoet\Newsletter\Editor\PostContentManager;
|
||||
use MailPoet\Newsletter\Renderer\StylesHelper;
|
||||
use MailPoet\Util\pQuery\pQuery;
|
||||
|
||||
class Text {
|
||||
static function render($element) {
|
||||
@ -25,7 +26,7 @@ class Text {
|
||||
}
|
||||
|
||||
static function convertBlockquotesToTables($html) {
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($html);
|
||||
$blockquotes = $DOM->query('blockquote');
|
||||
foreach($blockquotes as $blockquote) {
|
||||
@ -70,7 +71,7 @@ class Text {
|
||||
}
|
||||
|
||||
static function convertParagraphsToTables($html) {
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($html);
|
||||
$paragraphs = $DOM->query('p');
|
||||
if(!$paragraphs->count()) return $html;
|
||||
@ -134,7 +135,7 @@ class Text {
|
||||
}
|
||||
|
||||
static function styleLists($html) {
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($html);
|
||||
$lists = $DOM->query('ol, ul, li');
|
||||
if(!$lists->count()) return $html;
|
||||
@ -153,7 +154,7 @@ class Text {
|
||||
}
|
||||
|
||||
static function styleHeadings($html) {
|
||||
$DOM_parser = new \pQuery();
|
||||
$DOM_parser = new pQuery();
|
||||
$DOM = $DOM_parser->parseStr($html);
|
||||
$headings = $DOM->query('h1, h2, h3, h4');
|
||||
if(!$headings->count()) return $html;
|
||||
|
@ -3,10 +3,11 @@ namespace MailPoet\Newsletter\Renderer\PostProcess;
|
||||
|
||||
use MailPoet\Newsletter\Links\Links;
|
||||
use MailPoet\Newsletter\Renderer\Renderer;
|
||||
use MailPoet\Util\pQuery\pQuery;
|
||||
|
||||
class OpenTracking {
|
||||
static function process($template) {
|
||||
$DOM = new \pQuery();
|
||||
$DOM = new pQuery();
|
||||
$DOM = $DOM->parseStr($template);
|
||||
$template = $DOM->query('body');
|
||||
// url is a temporary data tag that will be further replaced with
|
||||
|
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace MailPoet\Newsletter\Renderer;
|
||||
|
||||
use MailPoet\Util\pQuery\pQuery;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
class Renderer {
|
||||
@ -19,7 +21,7 @@ class Renderer {
|
||||
$this->preview = $preview;
|
||||
$this->blocks_renderer = new Blocks\Renderer($this->newsletter, $this->preview);
|
||||
$this->columns_renderer = new Columns\Renderer();
|
||||
$this->DOM_parser = new \pQuery();
|
||||
$this->DOM_parser = new pQuery();
|
||||
$this->CSS_inliner = new \MailPoet\Util\CSS();
|
||||
$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