Add dummy dynamic segments filters
[MAILPOET-3077]
This commit is contained in:
committed by
Veljko V
parent
d18d3b052d
commit
d2e46c17ed
@ -50,6 +50,13 @@ class DynamicSegmentFilterEntity {
|
||||
return $this->filterData;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getFilterDataParam(string $name) {
|
||||
return $this->filterData[$name] ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
|
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Exceptions;
|
||||
|
||||
use MailPoet\InvalidStateException;
|
||||
|
||||
class InvalidFilterException extends InvalidStateException {
|
||||
|
||||
const MISSING_TYPE = 1;
|
||||
const INVALID_TYPE = 2;
|
||||
const MISSING_ROLE = 3;
|
||||
const MISSING_ACTION = 4;
|
||||
const MISSING_NEWSLETTER_ID = 5;
|
||||
const MISSING_CATEGORY_ID = 6;
|
||||
const MISSING_PRODUCT_ID = 7;
|
||||
|
||||
};
|
31
lib/Segments/DynamicSegments/Filters/EmailAction.php
Normal file
31
lib/Segments/DynamicSegments/Filters/EmailAction.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
|
||||
class EmailAction implements Filter {
|
||||
const ACTION_OPENED = 'opened';
|
||||
const ACTION_NOT_OPENED = 'notOpened';
|
||||
const ACTION_CLICKED = 'clicked';
|
||||
const ACTION_NOT_CLICKED = 'notClicked';
|
||||
|
||||
/** @var string */
|
||||
private $action;
|
||||
|
||||
/** @var int */
|
||||
private $newsletterId;
|
||||
|
||||
/** @var int|null */
|
||||
private $linkId;
|
||||
|
||||
public function __construct(string $action, int $newsletterId, int $linkId = null) {
|
||||
$this->action = $action;
|
||||
$this->newsletterId = $newsletterId;
|
||||
$this->linkId = $linkId;
|
||||
}
|
||||
|
||||
public function apply(QueryBuilder $queryBuilder): QueryBuilder {
|
||||
return $queryBuilder;
|
||||
}
|
||||
}
|
9
lib/Segments/DynamicSegments/Filters/Filter.php
Normal file
9
lib/Segments/DynamicSegments/Filters/Filter.php
Normal file
@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
|
||||
interface Filter {
|
||||
public function apply(QueryBuilder $queryBuilder): QueryBuilder;
|
||||
}
|
18
lib/Segments/DynamicSegments/Filters/UserRole.php
Normal file
18
lib/Segments/DynamicSegments/Filters/UserRole.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
|
||||
class UserRole implements Filter {
|
||||
/** @var string */
|
||||
private $role;
|
||||
|
||||
public function __construct(string $role) {
|
||||
$this->role = $role;
|
||||
}
|
||||
|
||||
public function apply(QueryBuilder $queryBuilder): QueryBuilder {
|
||||
return $queryBuilder;
|
||||
}
|
||||
}
|
20
lib/Segments/DynamicSegments/Filters/WooCommerceCategory.php
Normal file
20
lib/Segments/DynamicSegments/Filters/WooCommerceCategory.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
|
||||
class WooCommerceCategory implements Filter {
|
||||
const ACTION_CATEGORY = 'purchasedCategory';
|
||||
|
||||
/** @var int */
|
||||
private $categoryId;
|
||||
|
||||
public function __construct(int $categoryId) {
|
||||
$this->categoryId = $categoryId;
|
||||
}
|
||||
|
||||
public function apply(QueryBuilder $queryBuilder): QueryBuilder {
|
||||
return $queryBuilder;
|
||||
}
|
||||
}
|
20
lib/Segments/DynamicSegments/Filters/WooCommerceProduct.php
Normal file
20
lib/Segments/DynamicSegments/Filters/WooCommerceProduct.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Segments\DynamicSegments\Filters;
|
||||
|
||||
use MailPoetVendor\Doctrine\DBAL\Query\QueryBuilder;
|
||||
|
||||
class WooCommerceProduct implements Filter {
|
||||
const ACTION_PRODUCT = 'purchasedProduct';
|
||||
|
||||
/** @var int */
|
||||
private $productId;
|
||||
|
||||
public function __construct(int $productId) {
|
||||
$this->productId = $productId;
|
||||
}
|
||||
|
||||
public function apply(QueryBuilder $queryBuilder): QueryBuilder {
|
||||
return $queryBuilder;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user