Add loading tags into subscriber edit form

[MAILPOET-4440]
This commit is contained in:
Jan Lysý
2022-06-17 15:33:08 +02:00
committed by Veljko V
parent a289972a82
commit a4b45368de
3 changed files with 35 additions and 0 deletions

View File

@ -92,6 +92,7 @@ class SubscribersResponseBuilder {
'count_confirmations' => $subscriberEntity->getConfirmationsCount(), 'count_confirmations' => $subscriberEntity->getConfirmationsCount(),
'unsubscribe_token' => $subscriberEntity->getUnsubscribeToken(), 'unsubscribe_token' => $subscriberEntity->getUnsubscribeToken(),
'link_token' => $subscriberEntity->getLinkToken(), 'link_token' => $subscriberEntity->getLinkToken(),
'tags' => $this->buildTags($subscriberEntity),
]; ];
return $this->buildCustomFields($subscriberEntity, $data); return $this->buildCustomFields($subscriberEntity, $data);
@ -153,6 +154,25 @@ class SubscribersResponseBuilder {
return $data; return $data;
} }
private function buildTags(SubscriberEntity $subscriber): array {
$result = [];
foreach ($subscriber->getSubscriberTags() as $subscriberTag) {
$tag = $subscriberTag->getTag();
if (!$tag) {
continue;
}
$result[] = [
'id' => $subscriberTag->getId(),
'subscriber_id' => (string)$subscriber->getId(),
'tag_id' => (string)$tag->getId(),
'created_at' => ($createdAt = $subscriberTag->getCreatedAt()) ? $createdAt->format(self::DATE_FORMAT) : null,
'updated_at' => $subscriberTag->getUpdatedAt()->format(self::DATE_FORMAT),
'name' => $tag->getName(),
];
}
return $result;
}
/** /**
* @param SubscriberEntity[] $subscribers * @param SubscriberEntity[] $subscribers
*/ */

View File

@ -6,6 +6,7 @@ use MailPoet\AdminPages\PageRenderer;
use MailPoet\Cache\TransientCache; use MailPoet\Cache\TransientCache;
use MailPoet\Config\Installer; use MailPoet\Config\Installer;
use MailPoet\Config\ServicesChecker; use MailPoet\Config\ServicesChecker;
use MailPoet\Entities\TagEntity;
use MailPoet\Form\Block; use MailPoet\Form\Block;
use MailPoet\Listing\PageLimit; use MailPoet\Listing\PageLimit;
use MailPoet\Models\CustomField; use MailPoet\Models\CustomField;
@ -13,6 +14,7 @@ use MailPoet\Segments\SegmentsSimpleListRepository;
use MailPoet\Services\Bridge; use MailPoet\Services\Bridge;
use MailPoet\Settings\TrackingConfig; use MailPoet\Settings\TrackingConfig;
use MailPoet\Subscribers\ConfirmationEmailMailer; use MailPoet\Subscribers\ConfirmationEmailMailer;
use MailPoet\Tags\TagRepository;
use MailPoet\Util\License\Features\Subscribers as SubscribersFeature; use MailPoet\Util\License\Features\Subscribers as SubscribersFeature;
use MailPoet\Util\License\License; use MailPoet\Util\License\License;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
@ -40,6 +42,9 @@ class Subscribers {
/** @var SegmentsSimpleListRepository */ /** @var SegmentsSimpleListRepository */
private $segmentsListRepository; private $segmentsListRepository;
/** @var TagRepository */
private $tagRepository;
/** @var TransientCache */ /** @var TransientCache */
private $transientCache; private $transientCache;
@ -54,6 +59,7 @@ class Subscribers {
ServicesChecker $servicesChecker, ServicesChecker $servicesChecker,
Block\Date $dateBlock, Block\Date $dateBlock,
SegmentsSimpleListRepository $segmentsListRepository, SegmentsSimpleListRepository $segmentsListRepository,
TagRepository $tagRepository,
TransientCache $transientCache, TransientCache $transientCache,
TrackingConfig $trackingConfig TrackingConfig $trackingConfig
) { ) {
@ -64,6 +70,7 @@ class Subscribers {
$this->dateBlock = $dateBlock; $this->dateBlock = $dateBlock;
$this->servicesChecker = $servicesChecker; $this->servicesChecker = $servicesChecker;
$this->segmentsListRepository = $segmentsListRepository; $this->segmentsListRepository = $segmentsListRepository;
$this->tagRepository = $tagRepository;
$this->transientCache = $transientCache; $this->transientCache = $transientCache;
$this->trackingConfig = $trackingConfig; $this->trackingConfig = $trackingConfig;
} }
@ -80,6 +87,13 @@ class Subscribers {
$data['items_per_page'] = $this->listingPageLimit->getLimitPerPage('subscribers'); $data['items_per_page'] = $this->listingPageLimit->getLimitPerPage('subscribers');
$data['segments'] = $this->segmentsListRepository->getListWithSubscribedSubscribersCounts(); $data['segments'] = $this->segmentsListRepository->getListWithSubscribedSubscribersCounts();
$data['tags'] = array_map(function (TagEntity $tag): array {
return [
'id' => $tag->getId(),
'name' => $tag->getName(),
];
}, $this->tagRepository->findAll());
$data['custom_fields'] = array_map(function($field) { $data['custom_fields'] = array_map(function($field) {
$field['params'] = unserialize($field['params']); $field['params'] = unserialize($field['params']);

View File

@ -8,6 +8,7 @@
var mailpoet_listing_per_page = <%= items_per_page %>; var mailpoet_listing_per_page = <%= items_per_page %>;
var mailpoet_segments = <%= json_encode(segments) %>; var mailpoet_segments = <%= json_encode(segments) %>;
var mailpoet_custom_fields = <%= json_encode(custom_fields) %>; var mailpoet_custom_fields = <%= json_encode(custom_fields) %>;
var mailpoet_tags = <%= json_encode(tags) %>;
var mailpoet_month_names = <%= json_encode(month_names) %>; var mailpoet_month_names = <%= json_encode(month_names) %>;
var mailpoet_date_formats = <%= json_encode(date_formats) %>; var mailpoet_date_formats = <%= json_encode(date_formats) %>;
var mailpoet_premium_active = <%= json_encode(premium_plugin_active) %>; var mailpoet_premium_active = <%= json_encode(premium_plugin_active) %>;