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

@@ -9,6 +9,7 @@ use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsClickEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Entities\UserAgentEntity;
use MailPoetVendor\Doctrine\ORM\QueryBuilder;
/**
* @extends Repository<StatisticsClickEntity>
@@ -43,4 +44,16 @@ class StatisticsClicksRepository extends Repository {
}
return $statistics;
}
public function getAllForSubscriber(SubscriberEntity $subscriber): QueryBuilder {
return $this->entityManager->createQueryBuilder()
->select('clicks.id id, queue.newsletterRenderedSubject, clicks.createdAt, link.url, userAgent.userAgent')
->from(StatisticsClickEntity::class, 'clicks')
->join('clicks.queue', 'queue')
->join('clicks.link', 'link')
->leftJoin('clicks.userAgent', 'userAgent')
->where('clicks.subscriber = :subscriber')
->orderBy('link.url')
->setParameter('subscriber', $subscriber->getId());
}
}