Use Doctrine for the opens and clicks exporters

This commit refactors the code that handles exporting e-mails opens and
clicks when generating the personal data file to use Doctrine instead of
Paris. I opted to do this in this task as opens and clicks code share
some functionality, and I didn't want to add more code that relies on
Paris, as we are eventually going to remove it.

[MAILPOET-3738]
This commit is contained in:
Rodrigo Primo
2021-08-19 16:54:06 -03:00
committed by Veljko V
parent 780ac5e53c
commit 8b7815caf8
11 changed files with 68 additions and 88 deletions

View File

@@ -8,6 +8,7 @@ use MailPoet\Entities\StatisticsNewsletterEntity;
use MailPoet\Entities\StatisticsOpenEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\ORM\QueryBuilder;
/**
* @extends Repository<StatisticsOpenEntity>
@@ -86,4 +87,15 @@ class StatisticsOpensRepository extends Repository {
->setParameter('updatedAt', null)
->getQuery()->execute();
}
public function getAllForSubscriber(SubscriberEntity $subscriber): QueryBuilder {
return $this->entityManager->createQueryBuilder()
->select('opens.id id, queue.newsletterRenderedSubject, opens.createdAt, userAgent.userAgent')
->from(StatisticsOpenEntity::class, 'opens')
->join('opens.queue', 'queue')
->leftJoin('opens.userAgent', 'userAgent')
->where('opens.subscriber = :subscriber')
->orderBy('queue.newsletterRenderedSubject')
->setParameter('subscriber', $subscriber->getId());
}
}