Calculate statistics only from data with type human
[MAILPOET-3736]
This commit is contained in:
@@ -9,6 +9,7 @@ use MailPoet\Entities\StatisticsClickEntity;
|
|||||||
use MailPoet\Entities\StatisticsOpenEntity;
|
use MailPoet\Entities\StatisticsOpenEntity;
|
||||||
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||||
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
|
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
|
||||||
|
use MailPoet\Entities\UserAgentEntity;
|
||||||
use MailPoet\WooCommerce\Helper as WCHelper;
|
use MailPoet\WooCommerce\Helper as WCHelper;
|
||||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||||
use MailPoetVendor\Doctrine\ORM\UnexpectedResultException;
|
use MailPoetVendor\Doctrine\ORM\UnexpectedResultException;
|
||||||
@@ -131,12 +132,18 @@ class NewsletterStatisticsRepository extends Repository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function getStatisticCounts(string $statisticsEntityName, array $newsletters): array {
|
private function getStatisticCounts(string $statisticsEntityName, array $newsletters): array {
|
||||||
$results = $this->entityManager->createQueryBuilder()
|
$qb = $this->entityManager->createQueryBuilder()
|
||||||
->select('IDENTITY(stats.newsletter) AS id, COUNT(DISTINCT stats.subscriber) as cnt')
|
->select('IDENTITY(stats.newsletter) AS id, COUNT(DISTINCT stats.subscriber) as cnt')
|
||||||
->from($statisticsEntityName, 'stats')
|
->from($statisticsEntityName, 'stats')
|
||||||
->where('stats.newsletter IN (:newsletters)')
|
->where('stats.newsletter IN (:newsletters)')
|
||||||
->groupBy('stats.newsletter')
|
->groupBy('stats.newsletter')
|
||||||
->setParameter('newsletters', $newsletters)
|
->setParameter('newsletters', $newsletters);
|
||||||
|
if (in_array($statisticsEntityName, [StatisticsOpenEntity::class, StatisticsClickEntity::class], true)) {
|
||||||
|
$qb->andWhere('(stats.userAgentType = :userAgentType) OR (stats.userAgentType IS NULL)')
|
||||||
|
->setParameter('userAgentType', UserAgentEntity::USER_AGENT_TYPE_HUMAN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$results = $qb
|
||||||
->getQuery()
|
->getQuery()
|
||||||
->getResult();
|
->getResult();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user