Move NewstetterLink properties to NewsletterLinkEntity

Doing this as part of the task to deprecated old Paris models
(NewsletterLink) and use Doctrine entities instead
(NewslleterLinkEntity).

[MAILPOET-3816]
This commit is contained in:
Rodrigo Primo
2021-10-14 10:56:27 -03:00
committed by Veljko V
parent 34ef9fcbbf
commit 612eb1073d
9 changed files with 22 additions and 13 deletions

View File

@@ -13,6 +13,7 @@ use MailPoet\Cron\Workers\SubscribersLastEngagement;
use MailPoet\Cron\Workers\UnsubscribeTokens; use MailPoet\Cron\Workers\UnsubscribeTokens;
use MailPoet\Entities\FormEntity; use MailPoet\Entities\FormEntity;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Entities\NewsletterTemplateEntity; use MailPoet\Entities\NewsletterTemplateEntity;
use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
@@ -700,8 +701,8 @@ class Populator {
$wpdb->query(sprintf( $wpdb->query(sprintf(
$query, $query,
NewsletterLink::$_table, NewsletterLink::$_table,
NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE, NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
NewsletterLink::UNSUBSCRIBE_LINK_SHORT_CODE NewsletterLinkEntity::UNSUBSCRIBE_LINK_SHORT_CODE
)); ));
} }

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Cron\Workers\SendingQueue\Tasks; namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Models\NewsletterLink as NewsletterLinkModel; use MailPoet\Models\NewsletterLink as NewsletterLinkModel;
use MailPoet\Newsletter\Links\Links as NewsletterLinks; use MailPoet\Newsletter\Links\Links as NewsletterLinks;
use MailPoet\Router\Endpoints\Track; use MailPoet\Router\Endpoints\Track;
@@ -61,7 +62,7 @@ class Links {
$settings = SettingsController::getInstance(); $settings = SettingsController::getInstance();
if ((boolean)$settings->get('tracking.enabled') && $subscriber) { if ((boolean)$settings->get('tracking.enabled') && $subscriber) {
$linkHash = NewsletterLinkModel::where('queue_id', $queue->id) $linkHash = NewsletterLinkModel::where('queue_id', $queue->id)
->where('url', NewsletterLinkModel::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE) ->where('url', NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)
->findOne(); ->findOne();
if (!$linkHash instanceof NewsletterLinkModel) { if (!$linkHash instanceof NewsletterLinkModel) {
return ''; return '';

View File

@@ -11,7 +11,6 @@ use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatsNotificationEntity; use MailPoet\Entities\StatsNotificationEntity;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo; use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\NewsletterLink;
use MailPoet\Models\ScheduledTask; use MailPoet\Models\ScheduledTask;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository; use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@@ -176,7 +175,7 @@ class Worker {
public static function getShortcodeLinksMapping() { public static function getShortcodeLinksMapping() {
return [ return [
NewsletterLink::UNSUBSCRIBE_LINK_SHORT_CODE => __('Unsubscribe link', 'mailpoet'), NewsletterLinkEntity::UNSUBSCRIBE_LINK_SHORT_CODE => __('Unsubscribe link', 'mailpoet'),
'[link:subscription_manage_url]' => __('Manage subscription link', 'mailpoet'), '[link:subscription_manage_url]' => __('Manage subscription link', 'mailpoet'),
'[link:newsletter_view_in_browser_url]' => __('View in browser link', 'mailpoet'), '[link:newsletter_view_in_browser_url]' => __('View in browser link', 'mailpoet'),
]; ];

View File

@@ -19,6 +19,9 @@ class NewsletterLinkEntity {
use UpdatedAtTrait; use UpdatedAtTrait;
use SafeToOneAssociationLoadTrait; use SafeToOneAssociationLoadTrait;
public const UNSUBSCRIBE_LINK_SHORT_CODE = '[link:subscription_unsubscribe_url]';
public const INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE = '[link:subscription_instant_unsubscribe_url]';
/** /**
* @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity") * @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity")
* @ORM\JoinColumn(name="newsletter_id", referencedColumnName="id") * @ORM\JoinColumn(name="newsletter_id", referencedColumnName="id")

View File

@@ -2,6 +2,8 @@
namespace MailPoet\Models; namespace MailPoet\Models;
use MailPoet\Entities\NewsletterLinkEntity;
/** /**
* @property int $newsletterId * @property int $newsletterId
* @property int $queueId * @property int $queueId
@@ -11,6 +13,6 @@ namespace MailPoet\Models;
*/ */
class NewsletterLink extends Model { class NewsletterLink extends Model {
public static $_table = MP_NEWSLETTER_LINKS_TABLE; // phpcs:ignore PSR2.Classes.PropertyDeclaration public static $_table = MP_NEWSLETTER_LINKS_TABLE; // phpcs:ignore PSR2.Classes.PropertyDeclaration
const UNSUBSCRIBE_LINK_SHORT_CODE = '[link:subscription_unsubscribe_url]'; const UNSUBSCRIBE_LINK_SHORT_CODE = NewsletterLinkEntity::UNSUBSCRIBE_LINK_SHORT_CODE;
const INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE = '[link:subscription_instant_unsubscribe_url]'; const INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE = NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE;
} }

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Newsletter\Links; namespace MailPoet\Newsletter\Links;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\InvalidStateException; use MailPoet\InvalidStateException;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Newsletter\Shortcodes\Categories\Link; use MailPoet\Newsletter\Shortcodes\Categories\Link;
@@ -155,13 +156,13 @@ class Links {
public function ensureInstantUnsubscribeLink(array $processedLinks) { public function ensureInstantUnsubscribeLink(array $processedLinks) {
if (in_array( if (in_array(
NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE, NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
array_column($processedLinks, 'link')) array_column($processedLinks, 'link'))
) { ) {
return $processedLinks; return $processedLinks;
} }
$processedLinks[] = $this->hashLink( $processedLinks[] = $this->hashLink(
NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE, NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
Links::LINK_TYPE_SHORTCODE Links::LINK_TYPE_SHORTCODE
); );
return $processedLinks; return $processedLinks;

View File

@@ -3,7 +3,7 @@
namespace MailPoet\Newsletter\Shortcodes; namespace MailPoet\Newsletter\Shortcodes;
use MailPoet\CustomFields\CustomFieldsRepository; use MailPoet\CustomFields\CustomFieldsRepository;
use MailPoet\Models\NewsletterLink; use MailPoet\Entities\NewsletterLinkEntity;
class ShortcodesHelper { class ShortcodesHelper {
/** @var CustomFieldsRepository */ /** @var CustomFieldsRepository */
@@ -90,7 +90,7 @@ class ShortcodesHelper {
'text' => __('Unsubscribe link', 'mailpoet'), 'text' => __('Unsubscribe link', 'mailpoet'),
'shortcode' => sprintf( 'shortcode' => sprintf(
'<a target="_blank" href="%s">%s</a>', '<a target="_blank" href="%s">%s</a>',
NewsletterLink::UNSUBSCRIBE_LINK_SHORT_CODE, NewsletterLinkEntity::UNSUBSCRIBE_LINK_SHORT_CODE,
__('Unsubscribe', 'mailpoet') __('Unsubscribe', 'mailpoet')
), ),
], ],

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Test\Cron\Workers\SendingQueue\Tasks; namespace MailPoet\Test\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links; use MailPoet\Cron\Workers\SendingQueue\Tasks\Links;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoetVendor\Idiorm\ORM; use MailPoetVendor\Idiorm\ORM;
@@ -76,7 +77,7 @@ class LinksTest extends \MailPoetTest {
$queue = (object)['id' => 2]; $queue = (object)['id' => 2];
$this->links->process($renderedNewsletter, $newsletter, $queue); $this->links->process($renderedNewsletter, $newsletter, $queue);
$unsubscribeCount = NewsletterLink::where('newsletter_id', $newsletter->id) $unsubscribeCount = NewsletterLink::where('newsletter_id', $newsletter->id)
->where('url', NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)->count(); ->where('url', NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE)->count();
expect($unsubscribeCount)->equals(1); expect($unsubscribeCount)->equals(1);
} }

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Test\Newsletter\Links; namespace MailPoet\Test\Newsletter\Links;
use Codeception\Util\Fixtures; use Codeception\Util\Fixtures;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Models\NewsletterLink; use MailPoet\Models\NewsletterLink;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
@@ -255,7 +256,7 @@ class LinksTest extends \MailPoetTest {
]; ];
$links = $this->links->ensureInstantUnsubscribeLink($links); $links = $this->links->ensureInstantUnsubscribeLink($links);
expect(count($links))->equals(2); expect(count($links))->equals(2);
expect($links[1]['link'])->equals(NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE); expect($links[1]['link'])->equals(NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE);
expect($links[1]['type'])->equals(Links::LINK_TYPE_SHORTCODE); expect($links[1]['type'])->equals(Links::LINK_TYPE_SHORTCODE);
expect($links[1])->hasKey('processed_link'); expect($links[1])->hasKey('processed_link');
expect($links[1])->hasKey('hash'); expect($links[1])->hasKey('hash');