Files
piratepoet/lib/Statistics/Track/Unsubscribes.php
Rostislav Wolny 78f055b7aa Refactor unsubscribes tracker to doctrine
[MAILPOET-2736]
2020-05-05 14:40:11 +02:00

46 lines
1.4 KiB
PHP

<?php
namespace MailPoet\Statistics\Track;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Newsletter\Sending\SendingQueuesRepository;
use MailPoet\Statistics\StatisticsUnsubscribesRepository;
class Unsubscribes {
/** @var SendingQueuesRepository */
private $sendingQueuesRepository;
/** @var StatisticsUnsubscribesRepository */
private $statisticsUnsubscribesRepository;
public function __construct(
SendingQueuesRepository $sendingQueuesRepository,
StatisticsUnsubscribesRepository $statisticsUnsubscribesRepository
) {
$this->sendingQueuesRepository = $sendingQueuesRepository;
$this->statisticsUnsubscribesRepository = $statisticsUnsubscribesRepository;
}
public function track(int $subscriberId, int $queueId) {
$queue = $this->sendingQueuesRepository->findOneById($queueId);
if ($queue === null) {
return;
}
$newsletter = $queue->getNewsletter();
if ($newsletter === null) {
return;
}
$statistics = $this->statisticsUnsubscribesRepository->findOneBy([
'queue' => $queue,
'newsletter' => $newsletter,
'subscriberId' => $subscriberId,
]);
if (!$statistics) {
$statistics = new StatisticsUnsubscribeEntity($newsletter, $queue, $subscriberId);
$this->statisticsUnsubscribesRepository->persist($statistics);
$this->statisticsUnsubscribesRepository->flush();
}
}
}