Refactor mailpoet_subscribers_listings_filters_segments to direct calls

[MAILPOET-3077]
This commit is contained in:
Rostislav Wolny
2020-09-14 17:03:28 +02:00
committed by Veljko V
parent 1a56b2534e
commit a42b3d6e3f
4 changed files with 13 additions and 25 deletions

View File

@ -7,6 +7,7 @@ use MailPoet\API\JSON\Error as APIError;
use MailPoet\API\JSON\Response as APIResponse; use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder; use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
use MailPoet\Config\AccessControl; use MailPoet\Config\AccessControl;
use MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters;
use MailPoet\Entities\StatisticsUnsubscribeEntity; use MailPoet\Entities\StatisticsUnsubscribeEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Form\Util\FieldNameObfuscator; use MailPoet\Form\Util\FieldNameObfuscator;
@ -89,6 +90,9 @@ class Subscribers extends APIEndpoint {
/** @var SubscriberListingRepository */ /** @var SubscriberListingRepository */
private $subscriberListingRepository; private $subscriberListingRepository;
/** @var AddToSubscribersFilters */
private $dynamicSegmentsFiltersLoader;
public function __construct( public function __construct(
Listing\BulkActionController $bulkActionController, Listing\BulkActionController $bulkActionController,
SubscribersListings $subscribersListings, SubscribersListings $subscribersListings,
@ -105,7 +109,8 @@ class Subscribers extends APIEndpoint {
SubscribersRepository $subscribersRepository, SubscribersRepository $subscribersRepository,
SubscribersResponseBuilder $subscribersResponseBuilder, SubscribersResponseBuilder $subscribersResponseBuilder,
SubscriberListingRepository $subscriberListingRepository, SubscriberListingRepository $subscriberListingRepository,
FieldNameObfuscator $fieldNameObfuscator FieldNameObfuscator $fieldNameObfuscator,
AddToSubscribersFilters $dynamicSegmentsFiltersLoader
) { ) {
$this->bulkActionController = $bulkActionController; $this->bulkActionController = $bulkActionController;
$this->subscribersListings = $subscribersListings; $this->subscribersListings = $subscribersListings;
@ -123,6 +128,7 @@ class Subscribers extends APIEndpoint {
$this->subscribersRepository = $subscribersRepository; $this->subscribersRepository = $subscribersRepository;
$this->subscribersResponseBuilder = $subscribersResponseBuilder; $this->subscribersResponseBuilder = $subscribersResponseBuilder;
$this->subscriberListingRepository = $subscriberListingRepository; $this->subscriberListingRepository = $subscriberListingRepository;
$this->dynamicSegmentsFiltersLoader = $dynamicSegmentsFiltersLoader;
} }
public function get($data = []) { public function get($data = []) {
@ -143,12 +149,7 @@ class Subscribers extends APIEndpoint {
$count = $this->subscriberListingRepository->getCount($definition); $count = $this->subscriberListingRepository->getCount($definition);
$filters = $this->subscriberListingRepository->getFilters($definition); $filters = $this->subscriberListingRepository->getFilters($definition);
$groups = $this->subscriberListingRepository->getGroups($definition); $groups = $this->subscriberListingRepository->getGroups($definition);
$filters['segment'] = $this->dynamicSegmentsFiltersLoader->add($filters['segment'] ?? []);
$filters['segment'] = $this->wp->applyFilters(
'mailpoet_subscribers_listings_filters_segments',
$filters['segment']
);
return $this->successResponse($this->subscribersResponseBuilder->buildForListing($items), [ return $this->successResponse($this->subscribersResponseBuilder->buildForListing($items), [
'count' => $count, 'count' => $count,
'filters' => $filters, 'filters' => $filters,
@ -169,10 +170,7 @@ class Subscribers extends APIEndpoint {
$result[] = $subscriberResult; $result[] = $subscriberResult;
} }
$listingData['filters']['segment'] = $this->wp->applyFilters( $listingData['filters']['segment'] = $this->dynamicSegmentsFiltersLoader->add($listingData['filters']['segment'] ?? []);
'mailpoet_subscribers_listings_filters_segments',
$listingData['filters']['segment'] ?? []
);
return $this->successResponse( return $this->successResponse(
$result, [ $result, [

View File

@ -133,6 +133,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\DynamicSegments\DynamicSegmentHooks::class); $container->autowire(\MailPoet\DynamicSegments\DynamicSegmentHooks::class);
$container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\AddToNewslettersSegments::class); $container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\AddToNewslettersSegments::class);
$container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\SendingNewslettersSubscribersFinder::class)->setPublic(true); $container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\SendingNewslettersSubscribersFinder::class)->setPublic(true);
$container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters::class);
$container->autowire(\MailPoet\DynamicSegments\Mappers\DBMapper::class); $container->autowire(\MailPoet\DynamicSegments\Mappers\DBMapper::class);
$container->autowire(\MailPoet\DynamicSegments\Persistence\Loading\Loader::class); $container->autowire(\MailPoet\DynamicSegments\Persistence\Loading\Loader::class);
$container->autowire(\MailPoet\DynamicSegments\Persistence\Loading\SubscribersCount::class); $container->autowire(\MailPoet\DynamicSegments\Persistence\Loading\SubscribersCount::class);

View File

@ -2,12 +2,9 @@
namespace MailPoet\DynamicSegments; namespace MailPoet\DynamicSegments;
use MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters;
use MailPoet\DynamicSegments\FreePluginConnectors\SubscribersBulkActionHandler; use MailPoet\DynamicSegments\FreePluginConnectors\SubscribersBulkActionHandler;
use MailPoet\DynamicSegments\Mappers\DBMapper; use MailPoet\DynamicSegments\Mappers\DBMapper;
use MailPoet\DynamicSegments\Persistence\Loading\Loader;
use MailPoet\DynamicSegments\Persistence\Loading\SingleSegmentLoader; use MailPoet\DynamicSegments\Persistence\Loading\SingleSegmentLoader;
use MailPoet\DynamicSegments\Persistence\Loading\SubscribersCount;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
class DynamicSegmentHooks { class DynamicSegmentHooks {
@ -19,11 +16,6 @@ class DynamicSegmentHooks {
} }
public function init() { public function init() {
$this->wp->addAction(
'mailpoet_subscribers_listings_filters_segments',
[$this, 'addDynamicFiltersToSubscribersListingsFilters']
);
$this->wp->addAction( $this->wp->addAction(
'mailpoet_subscribers_in_segment_apply_bulk_action_handlers', 'mailpoet_subscribers_in_segment_apply_bulk_action_handlers',
[$this, 'applySubscriberBulkAction'] [$this, 'applySubscriberBulkAction']
@ -35,11 +27,6 @@ class DynamicSegmentHooks {
); );
} }
public function addDynamicFiltersToSubscribersListingsFilters($segmentFilters) {
$newslettersAddSegments = new AddToSubscribersFilters(new Loader(new DBMapper()), new SubscribersCount());
return $newslettersAddSegments->add($segmentFilters);
}
public function applySubscriberBulkAction(array $handlers) { public function applySubscriberBulkAction(array $handlers) {
$handlers[] = new SubscribersBulkActionHandler(); $handlers[] = new SubscribersBulkActionHandler();
return $handlers; return $handlers;

View File

@ -7,6 +7,7 @@ use MailPoet\API\JSON\Response as APIResponse;
use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder; use MailPoet\API\JSON\ResponseBuilders\SubscribersResponseBuilder;
use MailPoet\API\JSON\v1\Subscribers; use MailPoet\API\JSON\v1\Subscribers;
use MailPoet\DI\ContainerWrapper; use MailPoet\DI\ContainerWrapper;
use MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters;
use MailPoet\Entities\CustomFieldEntity; use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\FormEntity; use MailPoet\Entities\FormEntity;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
@ -101,7 +102,8 @@ class SubscribersTest extends \MailPoetTest {
$container->get(SubscribersRepository::class), $container->get(SubscribersRepository::class),
$container->get(SubscribersResponseBuilder::class), $container->get(SubscribersResponseBuilder::class),
$container->get(SubscriberListingRepository::class), $container->get(SubscriberListingRepository::class),
$obfuscator $obfuscator,
$container->get(AddToSubscribersFilters::class)
); );
$this->obfuscatedEmail = $obfuscator->obfuscate('email'); $this->obfuscatedEmail = $obfuscator->obfuscate('email');
$this->obfuscatedSegments = $obfuscator->obfuscate('segments'); $this->obfuscatedSegments = $obfuscator->obfuscate('segments');