Allow returning more filters in response for dynamic segments

[MAILPOET-3469]
This commit is contained in:
Jan Lysý
2021-06-02 19:07:53 +02:00
committed by Veljko V
parent b35de66ffd
commit eb0e7e317f

View File

@ -2,7 +2,6 @@
namespace MailPoet\API\JSON\ResponseBuilders; namespace MailPoet\API\JSON\ResponseBuilders;
use MailPoet\Entities\DynamicSegmentFilterEntity;
use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SegmentEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Segments\SegmentDependencyValidator; use MailPoet\Segments\SegmentDependencyValidator;
@ -39,12 +38,15 @@ class DynamicSegmentsResponseBuilder {
public function build(SegmentEntity $segmentEntity) { public function build(SegmentEntity $segmentEntity) {
$data = $this->segmentsResponseBuilder->build($segmentEntity); $data = $this->segmentsResponseBuilder->build($segmentEntity);
$data = $this->addMissingPluginProperties($segmentEntity, $data); $data = $this->addMissingPluginProperties($segmentEntity, $data);
// So far we allow dynamic segments to have only one filter $dynamicFilters = $segmentEntity->getDynamicFilters();
$filter = $segmentEntity->getDynamicFilters()->first(); $filters = [];
if (!$filter instanceof DynamicSegmentFilterEntity) { foreach ($dynamicFilters as $dynamicFilter) {
return $data; $filter = $dynamicFilter->getFilterData()->getData();
$filter['id'] = $dynamicFilter->getId();
$filters[] = $filter;
} }
return array_merge($data, $filter->getFilterData()->getData() ?? []); $data['filters'] = $filters;
return $data;
} }
public function buildForListing(array $segments): array { public function buildForListing(array $segments): array {