From f36b117987d1fe7b7189b4b6ee7a8ca0379348a1 Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Mon, 12 Feb 2024 14:42:51 +0100 Subject: [PATCH] Add "in the last" parameter to "mailpoet:subscriber:email-clicked-count" field [PREMIUM-253] --- .../MailPoet/Fields/SubscriberStatisticFieldsFactory.php | 6 +++--- .../Fields/SubscriberStatisticsFieldsFactoryTest.php | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Fields/SubscriberStatisticFieldsFactory.php b/mailpoet/lib/Automation/Integrations/MailPoet/Fields/SubscriberStatisticFieldsFactory.php index 081df5d82f..756ff1bc9d 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Fields/SubscriberStatisticFieldsFactory.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Fields/SubscriberStatisticFieldsFactory.php @@ -51,9 +51,9 @@ class SubscriberStatisticFieldsFactory { 'mailpoet:subscriber:email-clicked-count', Field::TYPE_INTEGER, __('Email — clicked count', 'mailpoet'), - function (SubscriberPayload $payload) { - $stats = $this->subscriberStatisticsRepository->getStatistics($payload->getSubscriber()); - return $stats->getClickCount(); + function (SubscriberPayload $payload, array $params = []) { + $startTime = $this->getStartTime($params); + return $this->subscriberStatisticsRepository->getStatisticsClickCount($payload->getSubscriber(), $startTime); } ), ]; diff --git a/mailpoet/tests/integration/Automation/Integrations/MailPoet/Fields/SubscriberStatisticsFieldsFactoryTest.php b/mailpoet/tests/integration/Automation/Integrations/MailPoet/Fields/SubscriberStatisticsFieldsFactoryTest.php index 174cdf71eb..bbd69d6ddc 100644 --- a/mailpoet/tests/integration/Automation/Integrations/MailPoet/Fields/SubscriberStatisticsFieldsFactoryTest.php +++ b/mailpoet/tests/integration/Automation/Integrations/MailPoet/Fields/SubscriberStatisticsFieldsFactoryTest.php @@ -113,6 +113,10 @@ class SubscriberStatisticsFieldsFactoryTest extends MailPoetTest { (new StatisticsClicksFactory($link1, $subscriber))->create(); // click 1 (new StatisticsClicksFactory($link2, $subscriber))->create(); // click 2 + // click dates are filtered by newsletter stats dates + (new StatisticsNewslettersFactory($newsletter1, $subscriber))->withSentAt(new Carbon('-1 week'))->create(); + (new StatisticsNewslettersFactory($newsletter2, $subscriber))->withSentAt(new Carbon('-1 day'))->create(); + // check definitions $field = $fields['mailpoet:subscriber:email-clicked-count']; $this->assertSame('Email — clicked count', $field->getName()); @@ -122,6 +126,9 @@ class SubscriberStatisticsFieldsFactoryTest extends MailPoetTest { // check values $payload = new SubscriberPayload($subscriber); $this->assertSame(2, $field->getValue($payload)); + $this->assertSame(2, $field->getValue($payload, ['in_the_last_seconds' => 3 * WEEK_IN_SECONDS])); + $this->assertSame(1, $field->getValue($payload, ['in_the_last_seconds' => 3 * DAY_IN_SECONDS])); + $this->assertSame(0, $field->getValue($payload, ['in_the_last_seconds' => 3 * HOUR_IN_SECONDS])); } /** @return array */