Calculate statistics only from data with type human

[MAILPOET-3736]
This commit is contained in:
Jan Lysý
2021-08-19 17:30:55 +02:00
committed by Veljko V
parent a22ab943be
commit ed46c48706

View File

@@ -9,6 +9,7 @@ use MailPoet\Entities\StatisticsClickEntity;
use MailPoet\Entities\StatisticsOpenEntity;
use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
use MailPoet\Entities\UserAgentEntity;
use MailPoet\WooCommerce\Helper as WCHelper;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\UnexpectedResultException;
@@ -131,12 +132,18 @@ class NewsletterStatisticsRepository extends Repository {
}
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')
->from($statisticsEntityName, 'stats')
->where('stats.newsletter IN (:newsletters)')
->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()
->getResult();