Extract strings to constants
MAILPOET-4991
This commit is contained in:
committed by
Aschepikov
parent
feb0297fb9
commit
5eeee574b2
@@ -43,6 +43,9 @@ class DynamicSegmentFilterData {
|
||||
DynamicSegmentFilterData::OPERATOR_NOT_ENDS_WITH,
|
||||
];
|
||||
|
||||
public const TIMEFRAME_ALL_TIME = 'allTime';
|
||||
public const TIMEFRAME_IN_THE_LAST = 'inTheLast';
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="serialized_array")
|
||||
* @var array|null
|
||||
|
@@ -69,7 +69,7 @@ class FilterDataMapper {
|
||||
private function createFilter(array $filterData): DynamicSegmentFilterData {
|
||||
if (isset($filterData['days']) && !isset($filterData['timeframe'])) {
|
||||
// Backwards compatibility for filters created before time period component had "over all time" option
|
||||
$filterData['timeframe'] = 'inTheLast';
|
||||
$filterData['timeframe'] = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST;
|
||||
}
|
||||
switch ($this->getSegmentType($filterData)) {
|
||||
case DynamicSegmentFilterData::TYPE_AUTOMATIONS:
|
||||
@@ -318,7 +318,7 @@ class FilterDataMapper {
|
||||
'opens' => $data['opens'],
|
||||
'days' => $data['days'] ?? 0,
|
||||
'operator' => $data['operator'] ?? 'more',
|
||||
'timeframe' => $data['timeframe'] ?? 'inTheLast', // backwards compatibility
|
||||
'timeframe' => $data['timeframe'] ?? DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST, // backwards compatibility
|
||||
'connect' => $data['connect'],
|
||||
];
|
||||
$filterType = DynamicSegmentFilterData::TYPE_EMAIL;
|
||||
@@ -513,11 +513,11 @@ class FilterDataMapper {
|
||||
}
|
||||
|
||||
private function validateDaysPeriodData(array $data): void {
|
||||
if (!isset($data['timeframe']) || !in_array($data['timeframe'], ['allTime', 'inTheLast'], true)) {
|
||||
if (!isset($data['timeframe']) || !in_array($data['timeframe'], [DynamicSegmentFilterData::TIMEFRAME_ALL_TIME, DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST], true)) {
|
||||
throw new InvalidFilterException('Missing timeframe type', InvalidFilterException::MISSING_VALUE);
|
||||
}
|
||||
|
||||
if ($data['timeframe'] === 'allTime') {
|
||||
if ($data['timeframe'] === DynamicSegmentFilterData::TIMEFRAME_ALL_TIME) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Entities\StatisticsOpenEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
@@ -34,7 +35,7 @@ class EmailOpensAbsoluteCountAction implements Filter {
|
||||
$statsTable = $this->entityManager->getClassMetadata(StatisticsOpenEntity::class)->getTableName();
|
||||
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();
|
||||
|
||||
if ($timeframe === 'allTime') {
|
||||
if ($timeframe === DynamicSegmentFilterData::TIMEFRAME_ALL_TIME) {
|
||||
$queryBuilder->leftJoin(
|
||||
$subscribersTable,
|
||||
$statsTable,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
@@ -31,7 +32,7 @@ class WooCommerceAverageSpent implements Filter {
|
||||
|
||||
$orderStatsAlias = $this->wooFilterHelper->applyOrderStatusFilter($queryBuilder);
|
||||
|
||||
if ($timeframe !== 'allTime') {
|
||||
if ($timeframe !== DynamicSegmentFilterData::TIMEFRAME_ALL_TIME) {
|
||||
$days = intval($filterData->getParam('days'));
|
||||
$date = Carbon::now()->subDays($days);
|
||||
$dateParam = $this->filterHelper->getUniqueParameterName('date');
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Util\DBCollationChecker;
|
||||
@@ -39,7 +40,7 @@ class WooCommerceNumberOfOrders implements Filter {
|
||||
$filterData = $filter->getFilterData();
|
||||
$type = strval($filterData->getParam('number_of_orders_type'));
|
||||
$count = intval($filterData->getParam('number_of_orders_count'));
|
||||
$isAllTime = $filterData->getParam('timeframe') === 'allTime';
|
||||
$isAllTime = $filterData->getParam('timeframe') === DynamicSegmentFilterData::TIMEFRAME_ALL_TIME;
|
||||
$parameterSuffix = $filter->getId() ?? Security::generateRandomString();
|
||||
$collation = $this->collationChecker->getCollateIfNeeded(
|
||||
$subscribersTable,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
@@ -23,7 +24,7 @@ class WooCommerceSingleOrderValue implements Filter {
|
||||
$filterData = $filter->getFilterData();
|
||||
$type = $filterData->getParam('single_order_value_type');
|
||||
$amount = $filterData->getParam('single_order_value_amount');
|
||||
$isAllTime = $filterData->getParam('timeframe') === 'allTime';
|
||||
$isAllTime = $filterData->getParam('timeframe') === DynamicSegmentFilterData::TIMEFRAME_ALL_TIME;
|
||||
$parameterSuffix = $filter->getId() ?? Security::generateRandomString();
|
||||
|
||||
$orderStatsAlias = $this->wooFilterHelper->applyOrderStatusFilter($queryBuilder);
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoet\Entities\DynamicSegmentFilterData;
|
||||
use MailPoet\Entities\DynamicSegmentFilterEntity;
|
||||
use MailPoet\Util\Security;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
@@ -23,7 +24,7 @@ class WooCommerceTotalSpent implements Filter {
|
||||
$filterData = $filter->getFilterData();
|
||||
$type = $filterData->getParam('total_spent_type');
|
||||
$amount = $filterData->getParam('total_spent_amount');
|
||||
$isAllTime = $filterData->getParam('timeframe') === 'allTime';
|
||||
$isAllTime = $filterData->getParam('timeframe') === DynamicSegmentFilterData::TIMEFRAME_ALL_TIME;
|
||||
|
||||
$parameterSuffix = $filter->getId() ?? Security::generateRandomString();
|
||||
$orderStatsAlias = $this->wooFilterHelper->applyOrderStatusFilter($queryBuilder);
|
||||
|
@@ -93,7 +93,7 @@ class EmailOpensAbsoluteCountActionTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testGetMachineOpened(): void {
|
||||
$segmentFilterData = $this->getSegmentFilterData(1, 'more', 5, 'inTheLast', EmailOpensAbsoluteCountAction::MACHINE_TYPE);
|
||||
$segmentFilterData = $this->getSegmentFilterData(1, 'more', 5, DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST, EmailOpensAbsoluteCountAction::MACHINE_TYPE);
|
||||
$emails = $this->tester->getSubscriberEmailsMatchingDynamicFilter($segmentFilterData, $this->action);
|
||||
$this->assertEqualsCanonicalizing(['opened-3-newsletters@example.com'], $emails);
|
||||
}
|
||||
@@ -135,7 +135,7 @@ class EmailOpensAbsoluteCountActionTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testOverAllTime() {
|
||||
$segmentFilterData = $this->getSegmentFilterData(1000000, 'less', 0, 'allTime');
|
||||
$segmentFilterData = $this->getSegmentFilterData(1000000, 'less', 0, DynamicSegmentFilterData::TIMEFRAME_ALL_TIME);
|
||||
$emails = $this->tester->getSubscriberEmailsMatchingDynamicFilter($segmentFilterData, $this->action);
|
||||
$this->assertEqualsCanonicalizing([
|
||||
'opened-3-newsletters@example.com',
|
||||
@@ -145,7 +145,7 @@ class EmailOpensAbsoluteCountActionTest extends \MailPoetTest {
|
||||
], $emails);
|
||||
}
|
||||
|
||||
private function getSegmentFilterData(int $opens, string $operator, int $days, string $timeframe = 'inTheLast', string $action = EmailOpensAbsoluteCountAction::TYPE): DynamicSegmentFilterData {
|
||||
private function getSegmentFilterData(int $opens, string $operator, int $days, string $timeframe = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST, string $action = EmailOpensAbsoluteCountAction::TYPE): DynamicSegmentFilterData {
|
||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, $action, [
|
||||
'operator' => $operator,
|
||||
'opens' => $opens,
|
||||
|
@@ -136,11 +136,11 @@ class WooCommerceAverageSpentTest extends \MailPoetTest {
|
||||
$this->createOrder($id1, 100, 3);
|
||||
$id1 = $this->tester->createCustomer('2@e.com');
|
||||
$this->createOrder($id1, 100, 30000);
|
||||
$matchingEmails = $this->getMatchingEmails('>=', 50, 0, 'allTime');
|
||||
$matchingEmails = $this->getMatchingEmails('>=', 50, 0, DynamicSegmentFilterData::TIMEFRAME_ALL_TIME);
|
||||
$this->assertEqualsCanonicalizing(['1@e.com', '2@e.com'], $matchingEmails);
|
||||
}
|
||||
|
||||
private function getMatchingEmails(string $operator, float $amount, int $days = 365, string $timeframe = 'inTheLast'): array {
|
||||
private function getMatchingEmails(string $operator, float $amount, int $days = 365, string $timeframe = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST): array {
|
||||
$filterData = new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceAverageSpent::ACTION, [
|
||||
'average_spent_type' => $operator,
|
||||
'average_spent_amount' => $amount,
|
||||
|
@@ -69,7 +69,7 @@ class WooCommerceNumberOfOrdersTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItWorksWithAllTimeTimeframe(): void {
|
||||
$segmentFilterData = $this->getSegmentFilterData('>', 0, 0, 'allTime');
|
||||
$segmentFilterData = $this->getSegmentFilterData('>', 0, 0, DynamicSegmentFilterData::TIMEFRAME_ALL_TIME);
|
||||
$emails = $this->tester->getSubscriberEmailsMatchingDynamicFilter($segmentFilterData, $this->numberOfOrdersFilter);
|
||||
$this->assertEqualsCanonicalizing([
|
||||
'customer1@example.com',
|
||||
@@ -78,7 +78,7 @@ class WooCommerceNumberOfOrdersTest extends \MailPoetTest {
|
||||
], $emails);
|
||||
}
|
||||
|
||||
private function getSegmentFilterData(string $comparisonType, int $ordersCount, int $days, $timeframe = 'inTheLast'): DynamicSegmentFilterData {
|
||||
private function getSegmentFilterData(string $comparisonType, int $ordersCount, int $days, $timeframe = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST): DynamicSegmentFilterData {
|
||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS, [
|
||||
'number_of_orders_type' => $comparisonType,
|
||||
'number_of_orders_count' => $ordersCount,
|
||||
|
@@ -48,7 +48,7 @@ class WooCommercePurchaseDateTest extends \MailPoetTest {
|
||||
$this->createOrder($customerId1, Carbon::now()->subDays(3));
|
||||
$this->createOrder($customerId2, Carbon::now()->subDays(4));
|
||||
$this->createOrder($customerId3, Carbon::now()->subDays(5));
|
||||
$emails = $this->getSubscriberEmailsMatchingFilter('inTheLast', '5');
|
||||
$emails = $this->getSubscriberEmailsMatchingFilter(DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST, '5');
|
||||
expect(count($emails))->equals(2);
|
||||
$this->assertEqualsCanonicalizing(['c1@example.com', 'c2@example.com'], $emails);
|
||||
}
|
||||
|
@@ -64,12 +64,12 @@ class WooCommerceSingleOrderValueTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItWorksWithLifetimeOption(): void {
|
||||
$segmentFilterData = $this->getSegmentFilterData('<', 1000000000, 0, 'allTime');
|
||||
$segmentFilterData = $this->getSegmentFilterData('<', 1000000000, 0, DynamicSegmentFilterData::TIMEFRAME_ALL_TIME);
|
||||
$emails = $this->tester->getSubscriberEmailsMatchingDynamicFilter($segmentFilterData, $this->singleOrderValue);
|
||||
$this->assertEqualsCanonicalizing(['customer1@example.com', 'customer2@example.com', 'customer3@example.com'], $emails);
|
||||
}
|
||||
|
||||
private function getSegmentFilterData(string $type, float $amount, int $days, $timeframe = 'inTheLast'): DynamicSegmentFilterData {
|
||||
private function getSegmentFilterData(string $type, float $amount, int $days, $timeframe = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST): DynamicSegmentFilterData {
|
||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceSingleOrderValue::ACTION_SINGLE_ORDER_VALUE, [
|
||||
'single_order_value_type' => $type,
|
||||
'single_order_value_amount' => $amount,
|
||||
|
@@ -71,12 +71,12 @@ class WooCommerceTotalSpentTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItWorksWithAllTimeOption(): void {
|
||||
$segmentFilterData = $this->getSegmentFilterData('<', 100000000000, 0, 'allTime');
|
||||
$segmentFilterData = $this->getSegmentFilterData('<', 100000000000, 0, DynamicSegmentFilterData::TIMEFRAME_ALL_TIME);
|
||||
$emails = $this->tester->getSubscriberEmailsMatchingDynamicFilter($segmentFilterData, $this->totalSpentFilter);
|
||||
$this->assertEqualsCanonicalizing(['customer1@example.com', 'customer2@example.com', 'customer3@example.com'], $emails);
|
||||
}
|
||||
|
||||
private function getSegmentFilterData(string $type, float $amount, int $days, $timeframe = 'inTheLast'): DynamicSegmentFilterData {
|
||||
private function getSegmentFilterData(string $type, float $amount, int $days, $timeframe = DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST): DynamicSegmentFilterData {
|
||||
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_WOOCOMMERCE, WooCommerceTotalSpent::ACTION_TOTAL_SPENT, [
|
||||
'total_spent_type' => $type,
|
||||
'total_spent_amount' => $amount,
|
||||
|
@@ -314,7 +314,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
expect($filter->getData())->equals([
|
||||
'opens' => 5,
|
||||
'days' => 3,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
'operator' => 'more',
|
||||
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
|
||||
]);
|
||||
@@ -358,7 +358,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
expect($filter->getData())->equals([
|
||||
'opens' => 5,
|
||||
'days' => 3,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
'operator' => 'less',
|
||||
'connect' => DynamicSegmentFilterData::CONNECT_TYPE_AND,
|
||||
]);
|
||||
@@ -369,7 +369,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
|
||||
'action' => EmailOpensAbsoluteCountAction::TYPE,
|
||||
'days' => 3,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
]]];
|
||||
$this->expectException(InvalidFilterException::class);
|
||||
$this->mapper->map($data);
|
||||
@@ -392,7 +392,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
'number_of_orders_type' => '=',
|
||||
'number_of_orders_count' => 2,
|
||||
'days' => 1,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
'some_mess' => 'mess',
|
||||
]]];
|
||||
|
||||
@@ -420,7 +420,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
$this->mapper->map(['filters' => [[
|
||||
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
|
||||
'action' => WooCommerceNumberOfOrders::ACTION_NUMBER_OF_ORDERS,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
'days' => 2,
|
||||
]]]);
|
||||
}
|
||||
@@ -432,7 +432,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
'single_order_value_type' => '=',
|
||||
'single_order_value_amount' => 20,
|
||||
'days' => 7,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
'some_mess' => 'mess',
|
||||
]]];
|
||||
|
||||
@@ -461,7 +461,7 @@ class FilterDataMapperTest extends \MailPoetUnitTest {
|
||||
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
|
||||
'action' => WooCommerceSingleOrderValue::ACTION_SINGLE_ORDER_VALUE,
|
||||
'days' => 2,
|
||||
'timeframe' => 'inTheLast',
|
||||
'timeframe' => DynamicSegmentFilterData::TIMEFRAME_IN_THE_LAST,
|
||||
]]]);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user