CustomFieldsResponseBuilder.php
11 months ago
DynamicSegmentsResponseBuilder.php
2 months ago
FormsResponseBuilder.php
11 months ago
NewsletterTemplatesResponseBuilder.php
11 months ago
NewslettersResponseBuilder.php
3 weeks ago
ScheduledTaskSubscriberResponseBuilder.php
3 years ago
SegmentsResponseBuilder.php
2 months ago
SendingQueuesResponseBuilder.php
2 months ago
SubscribersResponseBuilder.php
2 weeks ago
index.php
3 years ago
SegmentsResponseBuilder.php
65 lines
| 1 | <?php declare(strict_types = 1); |
| 2 | |
| 3 | namespace MailPoet\API\JSON\ResponseBuilders; |
| 4 | |
| 5 | if (!defined('ABSPATH')) exit; |
| 6 | |
| 7 | |
| 8 | use MailPoet\Entities\SegmentEntity; |
| 9 | use MailPoet\Subscribers\SubscribersCountsController; |
| 10 | use MailPoet\WP\Functions; |
| 11 | |
| 12 | class SegmentsResponseBuilder { |
| 13 | const DATE_FORMAT = 'Y-m-d H:i:s'; |
| 14 | |
| 15 | /** @var Functions */ |
| 16 | private $wp; |
| 17 | |
| 18 | /** @var SubscribersCountsController */ |
| 19 | private $subscribersCountsController; |
| 20 | |
| 21 | public function __construct( |
| 22 | Functions $wp, |
| 23 | SubscribersCountsController $subscribersCountsController |
| 24 | ) { |
| 25 | $this->wp = $wp; |
| 26 | $this->subscribersCountsController = $subscribersCountsController; |
| 27 | } |
| 28 | |
| 29 | public function build(SegmentEntity $segment): array { |
| 30 | return [ |
| 31 | 'id' => (string)$segment->getId(), // (string) for BC |
| 32 | 'name' => $segment->getName(), |
| 33 | 'type' => $segment->getType(), |
| 34 | 'description' => $segment->getDescription(), |
| 35 | 'public_description' => $segment->getPublicDescription(), |
| 36 | 'created_at' => ($createdAt = $segment->getCreatedAt()) ? $createdAt->format(self::DATE_FORMAT) : null, |
| 37 | 'updated_at' => ($updatedAt = $segment->getUpdatedAt()) ? $updatedAt->format(self::DATE_FORMAT) : null, |
| 38 | 'deleted_at' => ($deletedAt = $segment->getDeletedAt()) ? $deletedAt->format(self::DATE_FORMAT) : null, |
| 39 | 'average_engagement_score' => $segment->getAverageEngagementScore(), |
| 40 | 'filters_connect' => $segment->getFiltersConnectOperator(), |
| 41 | 'show_in_manage_subscription_page' => (int)$segment->getDisplayInManageSubscriptionPage(), |
| 42 | 'confirmation_email_id' => $segment->getConfirmationEmailId(), |
| 43 | 'confirmation_page_id' => $segment->getConfirmationPageId(), |
| 44 | ]; |
| 45 | } |
| 46 | |
| 47 | public function buildForListing(array $segments): array { |
| 48 | $data = []; |
| 49 | foreach ($segments as $segment) { |
| 50 | $data[] = $this->buildListingItem($segment); |
| 51 | } |
| 52 | return $data; |
| 53 | } |
| 54 | |
| 55 | private function buildListingItem(SegmentEntity $segment): array { |
| 56 | $data = $this->build($segment); |
| 57 | |
| 58 | $data['subscribers_count'] = $this->subscribersCountsController->getSegmentStatisticsCount($segment); |
| 59 | $data['subscribers_url'] = $this->wp->adminUrl( |
| 60 | 'admin.php?page=mailpoet-subscribers#/filter[segment=' . $segment->getId() . ']' |
| 61 | ); |
| 62 | return $data; |
| 63 | } |
| 64 | } |
| 65 |