|
|
|
@@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|