Move multi-conditional segment processing to Premium

[MAILPOET-3929]
This commit is contained in:
wxa
2021-12-06 18:11:38 +03:00
committed by Veljko V
parent 5e486462c0
commit 5641efb0d7
3 changed files with 43 additions and 5 deletions

View File

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