Move multi-conditional segment processing to Premium
[MAILPOET-3929]
This commit is contained in:
@@ -29,14 +29,19 @@ class SegmentsRepository extends Repository {
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
public function __construct(
|
||||
EntityManager $entityManager,
|
||||
NewsletterSegmentRepository $newsletterSegmentRepository,
|
||||
FormsRepository $formsRepository
|
||||
FormsRepository $formsRepository,
|
||||
WPFunctions $wp
|
||||
) {
|
||||
parent::__construct($entityManager);
|
||||
$this->newsletterSegmentRepository = $newsletterSegmentRepository;
|
||||
$this->formsRepository = $formsRepository;
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
protected function getEntityClassName() {
|
||||
@@ -137,7 +142,8 @@ class SegmentsRepository extends Repository {
|
||||
$this->entityManager->remove($filterEntity);
|
||||
}
|
||||
}
|
||||
foreach ($filtersData as $key => $filterData) {
|
||||
|
||||
$createOrUpdateFilter = function ($filterData, $key) use ($segment) {
|
||||
if ($filterData instanceof DynamicSegmentFilterData) {
|
||||
$filterEntity = $segment->getDynamicFilters()->get($key);
|
||||
if (!$filterEntity instanceof DynamicSegmentFilterEntity) {
|
||||
@@ -148,7 +154,17 @@ class SegmentsRepository extends Repository {
|
||||
$filterEntity->setFilterData($filterData);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
$wpActionName = 'mailpoet_dynamic_segments_filters_save';
|
||||
if ($this->wp->hasAction($wpActionName)) {
|
||||
$this->wp->doAction($wpActionName, $createOrUpdateFilter, $filtersData);
|
||||
} else {
|
||||
$filterData = reset($filtersData);
|
||||
$key = key($filtersData);
|
||||
$createOrUpdateFilter($filterData, $key);
|
||||
}
|
||||
|
||||
$this->flush();
|
||||
return $segment;
|
||||
}
|
||||
|
Reference in New Issue
Block a user