Use new signature of the dynamicSegmentFilterData constructor

[MAILPOET-3427]
This commit is contained in:
Jan Lysý
2021-10-22 11:20:49 +02:00
committed by Veljko V
parent cc05b945b4
commit 6e6ba3e7a1
24 changed files with 122 additions and 164 deletions

View File

@@ -63,9 +63,7 @@ class FilterDataMapper {
}
if ($data['action'] === SubscriberSubscribedDate::TYPE) {
if (empty($data['value'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE);
return new DynamicSegmentFilterData([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => $data['action'],
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], [
'value' => $data['value'],
'operator' => $data['operator'] ?? SubscriberSubscribedDate::BEFORE,
'connect' => $data['connect'],
@@ -76,8 +74,6 @@ class FilterDataMapper {
if (empty($data['custom_field_type'])) throw new InvalidFilterException('Missing custom field type', InvalidFilterException::MISSING_VALUE);
if (!isset($data['value'])) throw new InvalidFilterException('Missing value', InvalidFilterException::MISSING_VALUE);
$filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
'action' => $data['action'],
'value' => $data['value'],
'custom_field_id' => $data['custom_field_id'],
'custom_field_type' => $data['custom_field_type'],
@@ -85,13 +81,11 @@ class FilterDataMapper {
];
if (!empty($data['date_type'])) $filterData['date_type'] = $data['date_type'];
if (!empty($data['operator'])) $filterData['operator'] = $data['operator'];
return new DynamicSegmentFilterData($filterData);
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], $filterData);
}
if (empty($data['wordpressRole'])) throw new InvalidFilterException('Missing role', InvalidFilterException::MISSING_ROLE);
return new DynamicSegmentFilterData([
'segmentType' => DynamicSegmentFilterData::TYPE_USER_ROLE,
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_USER_ROLE, $data['action'], [
'wordpressRole' => $data['wordpressRole'],
'action' => $data['action'],
'connect' => $data['connect'],
]);
}
@@ -109,23 +103,21 @@ class FilterDataMapper {
return $this->createEmailOpensAbsoluteCount($data);
}
if ($data['action'] === EmailAction::ACTION_CLICKED_ANY) {
return new DynamicSegmentFilterData([
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
return new DynamicSegmentFilterData(DynamicSegmentFilterData::TYPE_EMAIL, $data['action'], [
'connect' => $data['connect'],
]);
}
if (empty($data['newsletter_id'])) throw new InvalidFilterException('Missing newsletter id', InvalidFilterException::MISSING_NEWSLETTER_ID);
$filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
'newsletter_id' => $data['newsletter_id'],
'connect' => $data['connect'],
];
$filterType = DynamicSegmentFilterData::TYPE_EMAIL;
$action = $data['action'];
if (isset($data['link_id'])) {
$filterData['link_id'] = $data['link_id'];
}
return new DynamicSegmentFilterData($filterData);
return new DynamicSegmentFilterData($filterType, $action, $filterData);
}
/**
@@ -135,14 +127,14 @@ class FilterDataMapper {
if (!isset($data['opens'])) throw new InvalidFilterException('Missing number of opens', InvalidFilterException::MISSING_VALUE);
if (empty($data['days'])) throw new InvalidFilterException('Missing number of days', InvalidFilterException::MISSING_VALUE);
$filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_EMAIL,
'action' => $data['action'],
'opens' => $data['opens'],
'days' => $data['days'],
'operator' => $data['operator'] ?? 'more',
'connect' => $data['connect'],
];
return new DynamicSegmentFilterData($filterData);
$filterType = DynamicSegmentFilterData::TYPE_EMAIL;
$action = $data['action'];
return new DynamicSegmentFilterData($filterType, $action, $filterData);
}
/**
@@ -151,10 +143,10 @@ class FilterDataMapper {
private function createWooCommerce(array $data): DynamicSegmentFilterData {
if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION);
$filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE,
'action' => $data['action'],
'connect' => $data['connect'],
];
$filterType = DynamicSegmentFilterData::TYPE_WOOCOMMERCE;
$action = $data['action'];
if ($data['action'] === WooCommerceCategory::ACTION_CATEGORY) {
if (!isset($data['category_id'])) throw new InvalidFilterException('Missing category', InvalidFilterException::MISSING_CATEGORY_ID);
$filterData['category_id'] = $data['category_id'];
@@ -187,7 +179,7 @@ class FilterDataMapper {
} else {
throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION);
}
return new DynamicSegmentFilterData($filterData);
return new DynamicSegmentFilterData($filterType, $action, $filterData);
}
/**
@@ -196,16 +188,16 @@ class FilterDataMapper {
private function createWooCommerceSubscription(array $data): DynamicSegmentFilterData {
if (empty($data['action'])) throw new InvalidFilterException('Missing action', InvalidFilterException::MISSING_ACTION);
$filterData = [
'segmentType' => DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION,
'action' => $data['action'],
'connect' => $data['connect'],
];
$filterType = DynamicSegmentFilterData::TYPE_WOOCOMMERCE_SUBSCRIPTION;
$action = $data['action'];
if ($data['action'] === WooCommerceSubscription::ACTION_HAS_ACTIVE) {
if (!isset($data['product_id'])) throw new InvalidFilterException('Missing product', InvalidFilterException::MISSING_PRODUCT_ID);
$filterData['product_id'] = $data['product_id'];
} else {
throw new InvalidFilterException("Unknown action " . $data['action'], InvalidFilterException::MISSING_ACTION);
}
return new DynamicSegmentFilterData($filterData);
return new DynamicSegmentFilterData($filterType, $action, $filterData);
}
}

View File

@@ -81,7 +81,7 @@ class FilterFactory {
public function getFilterForFilterEntity(DynamicSegmentFilterEntity $filter): Filter {
$filterData = $filter->getFilterData();
$filterType = $filterData->getFilterType();
$action = $filterData->getParam('action');
$action = $filterData->getAction();
switch ($filterType) {
case DynamicSegmentFilterData::TYPE_USER_ROLE:
return $this->userRole($action);

View File

@@ -49,7 +49,7 @@ class EmailAction implements Filter {
public function apply(QueryBuilder $queryBuilder, DynamicSegmentFilterEntity $filter): QueryBuilder {
$filterData = $filter->getFilterData();
$action = $filterData->getParam('action');
$action = $filterData->getAction();
$newsletterId = (int)$filterData->getParam('newsletter_id');
$linkId = $filterData->getParam('link_id') ? (int)$filterData->getParam('link_id') : null;
$parameterSuffix = (string)($filter->getId() ?? Security::generateRandomString());

View File

@@ -28,7 +28,7 @@ class EmailOpensAbsoluteCountAction implements Filter {
$filterData = $filter->getFilterData();
$days = $filterData->getParam('days');
$operator = $filterData->getParam('operator');
$action = $filterData->getParam('action');
$action = $filterData->getAction();
$parameterSuffix = $filter->getId() ?? Security::generateRandomString();
$statsTable = $this->entityManager->getClassMetadata(StatisticsOpenEntity::class)->getTableName();
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();