Add emoji support to newsletter body [MAILPOET-1009]

This commit is contained in:
stoletniy
2017-08-28 19:07:17 +03:00
parent 544bf0ddfd
commit b9bdc86fd9
6 changed files with 169 additions and 2 deletions

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']);