Skip to content

Commit

Permalink
moved removing subscriber queue to separate class
Browse files Browse the repository at this point in the history
  • Loading branch information
engcom-Charlie committed Feb 19, 2021
1 parent d98dc43 commit ec464f5
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,25 @@

namespace Magento\Newsletter\Model\Plugin;

use Magento\Newsletter\Model\ResourceModel\Queue as QueueResource;
use Magento\Newsletter\Model\RemoveSubscriberFromQueueLink;
use Magento\Newsletter\Model\Subscriber;

/**
* Plugin responsible for removing subscriber from queue after unsubscribe
* Plugin for removing subscriber from queue after unsubscribe
*/
class RemoveSubscriberFromQueue
{
private const STATUS = 'subscriber_status';

/**
* @var QueueResource
* @var RemoveSubscriberFromQueueLink
*/
private $queueResource;
private $removeSubscriberFromQueue;

/**
* @param QueueResource $queueResource
* @param RemoveSubscriberFromQueueLink $removeSubscriberFromQueue
*/
public function __construct(QueueResource $queueResource)
public function __construct(RemoveSubscriberFromQueueLink $removeSubscriberFromQueue)
{
$this->queueResource = $queueResource;
$this->removeSubscriberFromQueue = $removeSubscriberFromQueue;
}

/**
Expand All @@ -41,7 +39,7 @@ public function __construct(QueueResource $queueResource)
public function afterUnsubscribe(Subscriber $subject, Subscriber $subscriber): Subscriber
{
if ($subscriber->isStatusChanged() && $subscriber->getSubscriberStatus() === Subscriber::STATUS_UNSUBSCRIBED) {
$this->queueResource->removeSubscriberFromQueue((int) $subscriber->getId());
$this->removeSubscriberFromQueue->execute((int) $subscriber->getId());
}

return $subscriber;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\Newsletter\Model;

use Magento\Framework\App\ResourceConnection;
use Magento\Framework\DB\Adapter\AdapterInterface;

/**
* Responsible for removing subscriber from queue
*/
class RemoveSubscriberFromQueueLink
{
/**
* @var AdapterInterface
*/
private $connection;

/**
* @param ResourceConnection $resource
*/
public function __construct(ResourceConnection $resource)
{
$this->connection = $resource->getConnection();
}

/**
* Removes subscriber from queue
*
* @param int $subscriberId
* @return void
*/
public function execute(int $subscriberId): void
{
$this->connection->delete(
$this->connection->getTableName('newsletter_queue_link'),
['subscriber_id = ?' => $subscriberId, 'letter_sent_at IS NULL']
);
}
}
14 changes: 0 additions & 14 deletions app/code/Magento/Newsletter/Model/ResourceModel/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -125,20 +125,6 @@ public function removeSubscribersFromQueue(ModelQueue $queue)
}
}

/**
* Removes subscriber from queue
*
* @param int $subscriberId
* @return void
*/
public function removeSubscriberFromQueue(int $subscriberId): void
{
$this->getConnection()->delete(
$this->getTable('newsletter_queue_link'),
['subscriber_id = ?' => $subscriberId, 'letter_sent_at IS NULL']
);
}

/**
* Links queue to store
*
Expand Down

0 comments on commit ec464f5

Please sign in to comment.