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

View File

@ -133,6 +133,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\DynamicSegments\DynamicSegmentHooks::class);
$container->autowire(\MailPoet\DynamicSegments\FreePluginConnectors\AddToNewslettersSegments::class);
$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\Persistence\Loading\Loader::class);
$container->autowire(\MailPoet\DynamicSegments\Persistence\Loading\SubscribersCount::class);

View File

@ -2,12 +2,9 @@
namespace MailPoet\DynamicSegments;
use MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters;
use MailPoet\DynamicSegments\FreePluginConnectors\SubscribersBulkActionHandler;
use MailPoet\DynamicSegments\Mappers\DBMapper;
use MailPoet\DynamicSegments\Persistence\Loading\Loader;
use MailPoet\DynamicSegments\Persistence\Loading\SingleSegmentLoader;
use MailPoet\DynamicSegments\Persistence\Loading\SubscribersCount;
use MailPoet\WP\Functions as WPFunctions;
class DynamicSegmentHooks {
@ -19,11 +16,6 @@ class DynamicSegmentHooks {
}
public function init() {
$this->wp->addAction(
'mailpoet_subscribers_listings_filters_segments',
[$this, 'addDynamicFiltersToSubscribersListingsFilters']
);
$this->wp->addAction(
'mailpoet_subscribers_in_segment_apply_bulk_action_handlers',
[$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) {
$handlers[] = new SubscribersBulkActionHandler();
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\v1\Subscribers;
use MailPoet\DI\ContainerWrapper;
use MailPoet\DynamicSegments\FreePluginConnectors\AddToSubscribersFilters;
use MailPoet\Entities\CustomFieldEntity;
use MailPoet\Entities\FormEntity;
use MailPoet\Entities\NewsletterEntity;
@ -101,7 +102,8 @@ class SubscribersTest extends \MailPoetTest {
$container->get(SubscribersRepository::class),
$container->get(SubscribersResponseBuilder::class),
$container->get(SubscriberListingRepository::class),
$obfuscator
$obfuscator,
$container->get(AddToSubscribersFilters::class)
);
$this->obfuscatedEmail = $obfuscator->obfuscate('email');
$this->obfuscatedSegments = $obfuscator->obfuscate('segments');