Add dummy dynamic segments filters

[MAILPOET-3077]
This commit is contained in:
Rostislav Wolny
2020-09-16 13:06:25 +02:00
committed by Veljko V
parent d18d3b052d
commit d2e46c17ed
7 changed files with 122 additions and 0 deletions

View File

@ -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
*/

View File

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

View 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;
}
}

View 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;
}

View 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;
}
}

View 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;
}
}

View 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;
}
}