Show merged opens if respective setting is set
[MAILPOET-6164]
This commit is contained in:
@ -14,6 +14,7 @@ use MailPoet\Entities\StatisticsUnsubscribeEntity;
|
||||
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\UserAgentEntity;
|
||||
use MailPoet\Settings\TrackingConfig;
|
||||
use MailPoet\WooCommerce\Helper as WCHelper;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
|
||||
@ -28,12 +29,17 @@ class NewsletterStatisticsRepository extends Repository {
|
||||
/** @var WCHelper */
|
||||
private $wcHelper;
|
||||
|
||||
/** @var TrackingConfig */
|
||||
private $trackingConfig;
|
||||
|
||||
public function __construct(
|
||||
EntityManager $entityManager,
|
||||
WCHelper $wcHelper
|
||||
WCHelper $wcHelper,
|
||||
TrackingConfig $trackingConfig
|
||||
) {
|
||||
parent::__construct($entityManager);
|
||||
$this->wcHelper = $wcHelper;
|
||||
$this->trackingConfig = $trackingConfig;
|
||||
}
|
||||
|
||||
protected function getEntityClassName() {
|
||||
@ -222,7 +228,10 @@ class NewsletterStatisticsRepository extends Repository {
|
||||
|
||||
private function getStatisticCounts(string $statisticsEntityName, array $newsletters, \DateTimeImmutable $from = null, \DateTimeImmutable $to = null): array {
|
||||
$qb = $this->getStatisticsQuery($statisticsEntityName, $newsletters);
|
||||
if (in_array($statisticsEntityName, [StatisticsOpenEntity::class, StatisticsClickEntity::class], true)) {
|
||||
if (
|
||||
$statisticsEntityName === StatisticsClickEntity::class
|
||||
|| ($statisticsEntityName === StatisticsOpenEntity::class && $this->trackingConfig->areOpensSeparated())
|
||||
) {
|
||||
$qb->andWhere('(stats.userAgentType = :userAgentType) OR (stats.userAgentType IS NULL)')
|
||||
->setParameter('userAgentType', UserAgentEntity::USER_AGENT_TYPE_HUMAN);
|
||||
}
|
||||
|
@ -7,6 +7,9 @@ class TrackingConfig {
|
||||
const LEVEL_PARTIAL = 'partial';
|
||||
const LEVEL_BASIC = 'basic';
|
||||
|
||||
const OPENS_MERGED = 'merged';
|
||||
const OPENS_SEPARATED = 'separated';
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
@ -26,6 +29,15 @@ class TrackingConfig {
|
||||
return $level === self::LEVEL_FULL;
|
||||
}
|
||||
|
||||
public function areOpensMerged(string $opens = null): bool {
|
||||
$opens = $opens ?? $this->settings->get('tracking.opens', self::OPENS_MERGED);
|
||||
return $opens !== self::OPENS_SEPARATED;
|
||||
}
|
||||
|
||||
public function areOpensSeparated(string $opens = null): bool {
|
||||
return !$this->areOpensMerged($opens);
|
||||
}
|
||||
|
||||
public function getConfig(): array {
|
||||
return [
|
||||
'level' => $this->settings->get('tracking.level', self::LEVEL_FULL),
|
||||
|
@ -10,6 +10,7 @@ use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\UserAgentEntity;
|
||||
use MailPoet\Newsletter\Statistics\WooCommerceRevenue;
|
||||
use MailPoet\Settings\TrackingConfig;
|
||||
use MailPoet\WooCommerce\Helper as WCHelper;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
@ -23,12 +24,17 @@ class SubscriberStatisticsRepository extends Repository {
|
||||
/** @var WCHelper */
|
||||
private $wcHelper;
|
||||
|
||||
/** @var TrackingConfig */
|
||||
private $trackingConfig;
|
||||
|
||||
public function __construct(
|
||||
EntityManager $entityManager,
|
||||
WCHelper $wcHelper
|
||||
WCHelper $wcHelper,
|
||||
TrackingConfig $trackingConfig
|
||||
) {
|
||||
parent::__construct($entityManager);
|
||||
$this->wcHelper = $wcHelper;
|
||||
$this->trackingConfig = $trackingConfig;
|
||||
}
|
||||
|
||||
protected function getEntityClassName() {
|
||||
@ -64,9 +70,13 @@ class SubscriberStatisticsRepository extends Repository {
|
||||
}
|
||||
|
||||
public function getStatisticsOpenCount(SubscriberEntity $subscriber, ?Carbon $startTime = null): int {
|
||||
return (int)$this->getStatisticsOpenCountQuery($subscriber, $startTime)
|
||||
$queryBuilder = $this->getStatisticsOpenCountQuery($subscriber, $startTime);
|
||||
if ($this->trackingConfig->areOpensSeparated()) {
|
||||
$queryBuilder
|
||||
->andWhere('(stats.userAgentType = :userAgentType)')
|
||||
->setParameter('userAgentType', UserAgentEntity::USER_AGENT_TYPE_HUMAN)
|
||||
->setParameter('userAgentType', UserAgentEntity::USER_AGENT_TYPE_HUMAN);
|
||||
}
|
||||
return (int)$queryBuilder
|
||||
->getQuery()
|
||||
->getSingleScalarResult();
|
||||
}
|
||||
|
Reference in New Issue
Block a user