diff --git a/assets/js/src/segments/dynamic/segment_form_data.ts b/assets/js/src/segments/dynamic/segment_form_data.ts index 19e49981b5..30958f738e 100644 --- a/assets/js/src/segments/dynamic/segment_form_data.ts +++ b/assets/js/src/segments/dynamic/segment_form_data.ts @@ -30,6 +30,15 @@ interface SegmentFormDataWindow extends Window { id: string; }[]; + mailpoet_custom_fields: { + created_at: string; + id: number; + name: string; + type: string; + params: Record; + updated_at: string; + } + mailpoet_can_use_woocommerce_subscriptions: boolean; mailpoet_woocommerce_currency_symbol: string; } @@ -45,4 +54,5 @@ export const SegmentFormData = { canUseWooSubscriptions: window.mailpoet_can_use_woocommerce_subscriptions, wooCurrencySymbol: window.mailpoet_woocommerce_currency_symbol, wooCountries: window.mailpoet_woocommerce_countries, + customFieldsList: window.mailpoet_custom_fields, }; diff --git a/lib/AdminPages/Pages/Segments.php b/lib/AdminPages/Pages/Segments.php index 00a5ed805e..dc81560614 100644 --- a/lib/AdminPages/Pages/Segments.php +++ b/lib/AdminPages/Pages/Segments.php @@ -3,7 +3,9 @@ namespace MailPoet\AdminPages\Pages; use MailPoet\AdminPages\PageRenderer; +use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder; use MailPoet\Config\ServicesChecker; +use MailPoet\CustomFields\CustomFieldsRepository; use MailPoet\Entities\DynamicSegmentFilterData; use MailPoet\Listing\PageLimit; use MailPoet\Models\Newsletter; @@ -43,6 +45,12 @@ class Segments { /** @var SegmentDependencyValidator */ private $segmentDependencyValidator; + /** @var CustomFieldsRepository */ + private $customFieldsRepository; + + /** @var CustomFieldsResponseBuilder */ + private $customFieldsResponseBuilder; + public function __construct( PageRenderer $pageRenderer, PageLimit $listingPageLimit, @@ -52,6 +60,8 @@ class Segments { WPPostListLoader $wpPostListLoader, SubscribersFeature $subscribersFeature, SettingsController $settings, + CustomFieldsRepository $customFieldsRepository, + CustomFieldsResponseBuilder $customFieldsResponseBuilder, SegmentDependencyValidator $segmentDependencyValidator ) { $this->pageRenderer = $pageRenderer; @@ -63,6 +73,8 @@ class Segments { $this->wpPostListLoader = $wpPostListLoader; $this->settings = $settings; $this->segmentDependencyValidator = $segmentDependencyValidator; + $this->customFieldsRepository = $customFieldsRepository; + $this->customFieldsResponseBuilder = $customFieldsResponseBuilder; } public function render() { @@ -77,6 +89,8 @@ class Segments { $data['subscriber_count'] = $this->subscribersFeature->getSubscribersCount(); $data['has_premium_support'] = $this->subscribersFeature->hasPremiumSupport(); $data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false); + $customFields = $this->customFieldsRepository->findAll(); + $data['custom_fields'] = $this->customFieldsResponseBuilder->buildBatch($customFields); $wpRoles = $this->wp->getEditableRoles(); $data['wordpress_editable_roles_list'] = array_map(function($roleId, $role) { diff --git a/views/segments.html b/views/segments.html index c7f45476d9..7a9ff866c8 100644 --- a/views/segments.html +++ b/views/segments.html @@ -21,6 +21,7 @@ var mailpoet_has_valid_api_key = <%= has_valid_api_key ? 'true' : 'false' %>; var mailpoet_mss_key_invalid = <%= mss_key_invalid ? 'true' : 'false' %>; var mailpoet_subscribers_count = <%= subscriber_count %>; + var mailpoet_custom_fields = <%= json_encode(custom_fields) %>; var mailpoet_has_premium_support = <%= has_premium_support ? 'true' : 'false' %>; var wordpress_editable_roles_list = <%= json_encode(wordpress_editable_roles_list) %>; var mailpoet_newsletters_list = <%= json_encode(newsletters_list) %>;