Refactor Sending::getSubscribers() to use Doctrine instead of Paris

[MAILPOET-4368]
This commit is contained in:
Rodrigo Primo
2023-06-21 16:42:48 -03:00
committed by Aschepikov
parent eb16cca0da
commit b252043dac
3 changed files with 57 additions and 16 deletions

View File

@@ -4,12 +4,14 @@ namespace MailPoet\Tasks;
use MailPoet\Cron\Workers\SendingQueue\SendingQueue as SendingQueueAlias;
use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\InvalidStateException;
use MailPoet\Logging\LoggerFactory;
use MailPoet\Models\ScheduledTask;
use MailPoet\Models\ScheduledTaskSubscriber;
use MailPoet\Models\SendingQueue;
use MailPoet\Newsletter\Sending\ScheduledTaskSubscribersRepository;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Util\Helpers;
@@ -212,13 +214,26 @@ class Sending {
}
public function getSubscribers($processed = null) {
$subscribers = $this->taskSubscribers->getSubscribers();
if (!is_null($processed)) {
$status = ($processed) ? ScheduledTaskSubscriber::STATUS_PROCESSED : ScheduledTaskSubscriber::STATUS_UNPROCESSED;
$subscribers->where('processed', $status);
$scheduledTaskSubscribersRepository = ContainerWrapper::getInstance()->get(ScheduledTaskSubscribersRepository::class);
if (is_null($processed)) {
$subscribers = $scheduledTaskSubscribersRepository->findBy(['task' => $this->task->id]);
} else if ($processed) {
$subscribers = $scheduledTaskSubscribersRepository->findBy(
['task' => $this->task->id, 'processed' => ScheduledTaskSubscriberEntity::STATUS_PROCESSED]
);
} else {
$subscribers = $scheduledTaskSubscribersRepository->findBy(
['task' => $this->task->id, 'processed' => ScheduledTaskSubscriberEntity::STATUS_UNPROCESSED]
);
}
$subscribers = $subscribers->findArray();
return array_column($subscribers, 'subscriber_id');
return array_map(
function(ScheduledTaskSubscriberEntity $scheduledTaskSubscriber) {
return (string)$scheduledTaskSubscriber->getSubscriberId();
},
$subscribers
);
}
public function setSubscribers(array $subscriberIds) {