diff --git a/mailpoet/lib/API/MP/v1/API.php b/mailpoet/lib/API/MP/v1/API.php index af34c2e588..c8f60c5bfc 100644 --- a/mailpoet/lib/API/MP/v1/API.php +++ b/mailpoet/lib/API/MP/v1/API.php @@ -24,6 +24,9 @@ class API { /** @var CustomFields */ private $customFields; + /** @var Segments */ + private $segments; + /** @var Subscribers */ private $subscribers; @@ -33,11 +36,13 @@ class API { public function __construct( RequiredCustomFieldValidator $requiredCustomFieldValidator, CustomFields $customFields, + Segments $segments, Subscribers $subscribers, Changelog $changelog ) { $this->requiredCustomFieldValidator = $requiredCustomFieldValidator; $this->customFields = $customFields; + $this->segments = $segments; $this->subscribers = $subscribers; $this->changelog = $changelog; } @@ -116,9 +121,8 @@ class API { return $subscriber->withCustomFields()->withSubscriptions()->asArray(); } - public function getLists() { - return Segment::where('type', Segment::TYPE_DEFAULT) - ->findArray(); + public function getLists(): array { + return $this->segments->getAll(); } public function addSubscriber(array $subscriber, $listIds = [], $options = []) { diff --git a/mailpoet/lib/API/MP/v1/Segments.php b/mailpoet/lib/API/MP/v1/Segments.php new file mode 100644 index 0000000000..d019539f97 --- /dev/null +++ b/mailpoet/lib/API/MP/v1/Segments.php @@ -0,0 +1,44 @@ +segmentsRepository = $segmentsRepository; + } + + public function getAll(): array { + $segments = $this->segmentsRepository->findBy(['type' => SegmentEntity::TYPE_DEFAULT], ['id' => 'asc']); + $result = []; + foreach ($segments as $segment) { + $result[] = $this->buildItem($segment); + } + return $result; + } + + /** + * @param SegmentEntity $segment + * @return array + */ + private function buildItem(SegmentEntity $segment): array { + return [ + 'id' => (string)$segment->getId(), // (string) for BC + 'name' => $segment->getName(), + 'type' => $segment->getType(), + 'description' => $segment->getDescription(), + 'created_at' => ($createdAt = $segment->getCreatedAt()) ? $createdAt->format(self::DATE_FORMAT) : null, + 'updated_at' => $segment->getUpdatedAt()->format(self::DATE_FORMAT), + 'deleted_at' => ($deletedAt = $segment->getDeletedAt()) ? $deletedAt->format(self::DATE_FORMAT) : null, + ]; + } +} diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 93a459de25..e2b5def2e9 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -61,6 +61,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\API\MP\v1\CustomFields::class)->setPublic(true); $container->autowire(\MailPoet\API\MP\v1\API::class)->setPublic(true); $container->autowire(\MailPoet\API\MP\v1\Subscribers::class)->setPublic(true); + $container->autowire(\MailPoet\API\MP\v1\Segments::class)->setPublic(true); $container->autowire(\MailPoet\API\JSON\v1\Analytics::class)->setPublic(true); $container->autowire(\MailPoet\API\JSON\v1\AutomatedLatestContent::class)->setPublic(true); $container->autowire(\MailPoet\API\JSON\v1\AutomaticEmails::class)->setPublic(true);