Extract usage of emoji encoding from the newsletter model [MAILPOET-2460]

This commit is contained in:
wxa
2019-10-23 14:46:32 +03:00
committed by Jack Kitterhing
parent 8fb18e7c2e
commit da9c42963f
2 changed files with 12 additions and 6 deletions

View File

@@ -27,6 +27,7 @@ use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Services\AuthorizedEmailsController; use MailPoet\Services\AuthorizedEmailsController;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
use MailPoet\WooCommerce\Helper as WCHelper; use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class Newsletters extends APIEndpoint { class Newsletters extends APIEndpoint {
@@ -65,6 +66,9 @@ class Newsletters extends APIEndpoint {
/** @var MetaInfo */ /** @var MetaInfo */
private $mailerMetaInfo; private $mailerMetaInfo;
/** @var Emoji */
private $emoji;
function __construct( function __construct(
Listing\BulkActionController $bulk_action, Listing\BulkActionController $bulk_action,
Listing\Handler $listing_handler, Listing\Handler $listing_handler,
@@ -75,7 +79,8 @@ class Newsletters extends APIEndpoint {
NewslettersRepository $newsletters_repository, NewslettersRepository $newsletters_repository,
NewslettersResponseBuilder $newsletters_response_builder, NewslettersResponseBuilder $newsletters_response_builder,
PostNotificationScheduler $post_notification_scheduler, PostNotificationScheduler $post_notification_scheduler,
MetaInfo $mailerMetaInfo MetaInfo $mailerMetaInfo,
Emoji $emoji
) { ) {
$this->bulk_action = $bulk_action; $this->bulk_action = $bulk_action;
$this->listing_handler = $listing_handler; $this->listing_handler = $listing_handler;
@@ -87,6 +92,7 @@ class Newsletters extends APIEndpoint {
$this->newsletters_response_builder = $newsletters_response_builder; $this->newsletters_response_builder = $newsletters_response_builder;
$this->post_notification_scheduler = $post_notification_scheduler; $this->post_notification_scheduler = $post_notification_scheduler;
$this->mailerMetaInfo = $mailerMetaInfo; $this->mailerMetaInfo = $mailerMetaInfo;
$this->emoji = $emoji;
} }
function get($data = []) { function get($data = []) {
@@ -170,6 +176,9 @@ class Newsletters extends APIEndpoint {
$old_newsletter = Newsletter::findOne(intval($data['id'])) ?: null; $old_newsletter = Newsletter::findOne(intval($data['id'])) ?: null;
} }
if (!empty($data['body'])) {
$data['body'] = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $data['body']);
}
$newsletter = Newsletter::createOrUpdate($data); $newsletter = Newsletter::createOrUpdate($data);
$errors = $newsletter->getErrors(); $errors = $newsletter->getErrors();
@@ -396,6 +405,7 @@ class Newsletters extends APIEndpoint {
if ($newsletter instanceof Newsletter) { if ($newsletter instanceof Newsletter) {
$newsletter->body = $data['body']; $newsletter->body = $data['body'];
$newsletter->body = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $newsletter->body);
$newsletter->save(); $newsletter->save();
$subscriber = Subscriber::getCurrentWPUser(); $subscriber = Subscriber::getCurrentWPUser();
$preview_url = NewsletterUrl::getViewInBrowserUrl( $preview_url = NewsletterUrl::getViewInBrowserUrl(

View File

@@ -14,7 +14,6 @@ use MailPoet\Tasks\Sending as SendingTask;
use MailPoet\Util\Helpers; use MailPoet\Util\Helpers;
use MailPoet\Util\Security; use MailPoet\Util\Security;
use MailPoet\WooCommerce\Helper as WCHelper; use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use function MailPoet\Util\array_column; use function MailPoet\Util\array_column;
@@ -58,14 +57,11 @@ class Newsletter extends Model {
// automatic newsletters status // automatic newsletters status
const STATUS_ACTIVE = NewsletterEntity::STATUS_ACTIVE; const STATUS_ACTIVE = NewsletterEntity::STATUS_ACTIVE;
private $emoji;
function __construct() { function __construct() {
parent::__construct(); parent::__construct();
$this->addValidations('type', [ $this->addValidations('type', [
'required' => WPFunctions::get()->__('Please specify a type.', 'mailpoet'), 'required' => WPFunctions::get()->__('Please specify a type.', 'mailpoet'),
]); ]);
$this->emoji = new Emoji();
} }
function queue() { function queue() {
@@ -125,7 +121,7 @@ class Newsletter extends Model {
} }
$this->set( $this->set(
'body', 'body',
$this->emoji->encodeForUTF8Column(self::$_table, 'body', $this->body) $this->body
); );
} }