Merge pull request #1067 from mailpoet/emoji

Add emoji support to newsletter body [MAILPOET-1009]
This commit is contained in:
mrcasual
2017-08-30 10:04:26 -04:00
committed by GitHub
6 changed files with 174 additions and 7 deletions

View File

@@ -4,6 +4,7 @@ use Carbon\Carbon;
use MailPoet\Newsletter\Renderer\Renderer;
use MailPoet\Util\Helpers;
use MailPoet\Util\Security;
use MailPoet\WP\Emoji;
if(!defined('ABSPATH')) exit;
@@ -79,11 +80,15 @@ class Newsletter extends Model {
$this->set_expr('deleted_at', 'NULL');
}
$this->set('body',
is_array($this->body)
? json_encode($this->body)
: $this->body
);
if(isset($this->body)) {
if(is_array($this->body)) {
$this->body = json_encode($this->body);
}
$this->set(
'body',
Emoji::encodeForUTF8Column(self::$_table, 'body', $this->body)
);
}
$this->set('hash',
($this->hash)

View File

@@ -1,6 +1,8 @@
<?php
namespace MailPoet\Models;
use MailPoet\WP\Emoji;
if(!defined('ABSPATH')) exit;
class SendingQueue extends Model {
@@ -55,7 +57,10 @@ class SendingQueue extends Model {
$this->set('subscribers', serialize($this->subscribers));
}
if(!is_serialized($this->newsletter_rendered_body) && !is_null($this->newsletter_rendered_body)) {
$this->set('newsletter_rendered_body', serialize($this->newsletter_rendered_body));
$this->set(
'newsletter_rendered_body',
serialize($this->encodeEmojisInBody($this->newsletter_rendered_body))
);
}
// set the default priority to medium
if(!$this->priority) {
@@ -81,12 +86,34 @@ class SendingQueue extends Model {
function getNewsletterRenderedBody($type = false) {
$rendered_newsletter = (!is_serialized($this->newsletter_rendered_body)) ?
$this->newsletter_rendered_body :
unserialize($this->newsletter_rendered_body);
$this->decodeEmojisInBody(unserialize($this->newsletter_rendered_body));
return ($type && !empty($rendered_newsletter[$type])) ?
$rendered_newsletter[$type] :
$rendered_newsletter;
}
function encodeEmojisInBody($newsletter_rendered_body) {
if(is_array($newsletter_rendered_body)) {
foreach($newsletter_rendered_body as $key => $value) {
$newsletter_rendered_body[$key] = Emoji::encodeForUTF8Column(
self::$_table,
'newsletter_rendered_body',
$value
);
}
}
return $newsletter_rendered_body;
}
function decodeEmojisInBody($newsletter_rendered_body) {
if(is_array($newsletter_rendered_body)) {
foreach($newsletter_rendered_body as $key => $value) {
$newsletter_rendered_body[$key] = Emoji::decodeEntities($value);
}
}
return $newsletter_rendered_body;
}
function isSubscriberProcessed($subscriber_id) {
$subscribers = $this->getSubscribers();
return in_array($subscriber_id, $subscribers['processed']);