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\Entities\FormEntity;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Entities\NewsletterTemplateEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity;
@@ -700,8 +701,8 @@ class Populator {
$wpdb->query(sprintf(
$query,
NewsletterLink::$_table,
NewsletterLink::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
NewsletterLink::UNSUBSCRIBE_LINK_SHORT_CODE
NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
NewsletterLinkEntity::UNSUBSCRIBE_LINK_SHORT_CODE
));
}

View File

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

View File

@@ -11,7 +11,6 @@ use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatsNotificationEntity;
use MailPoet\Mailer\Mailer;
use MailPoet\Mailer\MetaInfo;
use MailPoet\Models\NewsletterLink;
use MailPoet\Models\ScheduledTask;
use MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository;
use MailPoet\Settings\SettingsController;
@@ -176,7 +175,7 @@ class Worker {
public static function getShortcodeLinksMapping() {
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:newsletter_view_in_browser_url]' => __('View in browser link', 'mailpoet'),
];

View File

@@ -19,6 +19,9 @@ class NewsletterLinkEntity {
use UpdatedAtTrait;
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\JoinColumn(name="newsletter_id", referencedColumnName="id")

View File

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

View File

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

View File

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

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Test\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Cron\Workers\SendingQueue\Tasks\Links;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Models\Newsletter;
use MailPoet\Models\NewsletterLink;
use MailPoetVendor\Idiorm\ORM;
@@ -76,7 +77,7 @@ class LinksTest extends \MailPoetTest {
$queue = (object)['id' => 2];
$this->links->process($renderedNewsletter, $newsletter, $queue);
$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);
}

View File

@@ -3,6 +3,7 @@
namespace MailPoet\Test\Newsletter\Links;
use Codeception\Util\Fixtures;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Models\NewsletterLink;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber;
@@ -255,7 +256,7 @@ class LinksTest extends \MailPoetTest {
];
$links = $this->links->ensureInstantUnsubscribeLink($links);
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])->hasKey('processed_link');
expect($links[1])->hasKey('hash');