Leave filters out of refactoring

[MAILPOET-2657]
This commit is contained in:
Pavel Dohnal
2020-08-04 13:35:56 +02:00
committed by Veljko V
parent 6e49cc5e4e
commit 597f6acaca
3 changed files with 37 additions and 28 deletions

View File

@ -87,7 +87,7 @@ class Subscribers extends APIEndpoint {
private $subscribersResponseBuilder; private $subscribersResponseBuilder;
/** @var SubscriberListingRepository */ /** @var SubscriberListingRepository */
private $newsletterListingRepository; private $subscriberListingRepository;
public function __construct( public function __construct(
Listing\BulkActionController $bulkActionController, Listing\BulkActionController $bulkActionController,
@ -104,7 +104,7 @@ class Subscribers extends APIEndpoint {
Unsubscribes $unsubscribesTracker, Unsubscribes $unsubscribesTracker,
SubscribersRepository $subscribersRepository, SubscribersRepository $subscribersRepository,
SubscribersResponseBuilder $subscribersResponseBuilder, SubscribersResponseBuilder $subscribersResponseBuilder,
SubscriberListingRepository $newsletterListingRepository, SubscriberListingRepository $subscriberListingRepository,
FieldNameObfuscator $fieldNameObfuscator FieldNameObfuscator $fieldNameObfuscator
) { ) {
$this->bulkActionController = $bulkActionController; $this->bulkActionController = $bulkActionController;
@ -122,7 +122,7 @@ class Subscribers extends APIEndpoint {
$this->unsubscribesTracker = $unsubscribesTracker; $this->unsubscribesTracker = $unsubscribesTracker;
$this->subscribersRepository = $subscribersRepository; $this->subscribersRepository = $subscribersRepository;
$this->subscribersResponseBuilder = $subscribersResponseBuilder; $this->subscribersResponseBuilder = $subscribersResponseBuilder;
$this->newsletterListingRepository = $newsletterListingRepository; $this->subscriberListingRepository = $subscriberListingRepository;
} }
public function get($data = []) { public function get($data = []) {
@ -139,10 +139,15 @@ class Subscribers extends APIEndpoint {
public function listing($data = []) { public function listing($data = []) {
if (!isset($data['filter']['segment'])) { if (!isset($data['filter']['segment'])) {
$definition = $this->listingHandler->getListingDefinition($data); $definition = $this->listingHandler->getListingDefinition($data);
$items = $this->newsletterListingRepository->getData($definition); $items = $this->subscriberListingRepository->getData($definition);
$count = $this->newsletterListingRepository->getCount($definition); $count = $this->subscriberListingRepository->getCount($definition);
$filters = $this->newsletterListingRepository->getFilters($definition); $filters = $this->subscriberListingRepository->getFilters($definition);
$groups = $this->newsletterListingRepository->getGroups($definition); $groups = $this->subscriberListingRepository->getGroups($definition);
$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,
@ -150,30 +155,33 @@ class Subscribers extends APIEndpoint {
'groups' => $groups, 'groups' => $groups,
]); ]);
} else { } else {
// this branch is here temporarily until we refactor dynamic segments to doctrine [MAILPOET-3077]
$listingData = $this->subscribersListings->getListingsInSegment($data); $listingData = $this->subscribersListings->getListingsInSegment($data);
}
$result = []; $result = [];
foreach ($listingData['items'] as $subscriber) { foreach ($listingData['items'] as $subscriber) {
$subscriberResult = $subscriber $subscriberResult = $subscriber
->withSubscriptions() ->withSubscriptions()
->asArray(); ->asArray();
if (isset($data['filter']['segment'])) { if (isset($data['filter']['segment'])) {
$subscriberResult = $this->preferUnsubscribedStatusFromSegment($subscriberResult, $data['filter']['segment']); $subscriberResult = $this->preferUnsubscribedStatusFromSegment($subscriberResult, $data['filter']['segment']);
}
$result[] = $subscriberResult;
} }
$result[] = $subscriberResult;
$listingData['filters']['segment'] = $this->wp->applyFilters(
'mailpoet_subscribers_listings_filters_segments',
$listingData['filters']['segment'] ?? []
);
return $this->successResponse(
$result, [
'count' => $listingData['count'],
'filters' => $listingData['filters'],
'groups' => $listingData['groups'],
]
);
} }
$listingData['filters']['segment'] = $this->wp->applyFilters(
'mailpoet_subscribers_listings_filters_segments',
$listingData['filters']['segment'] ?? []
);
return $this->successResponse($result, [
'count' => $listingData['count'],
'filters' => $listingData['filters'],
'groups' => $listingData['groups'],
]);
} }
private function preferUnsubscribedStatusFromSegment(array $subscriber, $segmentId) { private function preferUnsubscribedStatusFromSegment(array $subscriber, $segmentId) {

View File

@ -6,7 +6,6 @@ use MailPoet\Entities\SubscriberEntity;
use MailPoet\Listing\ListingDefinition; use MailPoet\Listing\ListingDefinition;
use MailPoet\Listing\ListingRepository; use MailPoet\Listing\ListingRepository;
use MailPoet\WP\Functions as WPFunctions; use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Doctrine\ORM\EntityManager;
use MailPoetVendor\Doctrine\ORM\Query\Expr\Join; use MailPoetVendor\Doctrine\ORM\Query\Expr\Join;
use MailPoetVendor\Doctrine\ORM\QueryBuilder; use MailPoetVendor\Doctrine\ORM\QueryBuilder;

View File

@ -38,6 +38,7 @@ use MailPoet\Subscribers\LinkTokens;
use MailPoet\Subscribers\RequiredCustomFieldValidator; use MailPoet\Subscribers\RequiredCustomFieldValidator;
use MailPoet\Subscribers\Source; use MailPoet\Subscribers\Source;
use MailPoet\Subscribers\SubscriberActions; use MailPoet\Subscribers\SubscriberActions;
use MailPoet\Subscribers\SubscriberListingRepository;
use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\Subscription\Captcha; use MailPoet\Subscription\Captcha;
use MailPoet\Subscription\CaptchaSession; use MailPoet\Subscription\CaptchaSession;
@ -98,6 +99,7 @@ class SubscribersTest extends \MailPoetTest {
$container->get(Unsubscribes::class), $container->get(Unsubscribes::class),
$container->get(SubscribersRepository::class), $container->get(SubscribersRepository::class),
$container->get(SubscribersResponseBuilder::class), $container->get(SubscribersResponseBuilder::class),
$container->get(SubscriberListingRepository::class),
$obfuscator $obfuscator
); );
$this->obfuscatedEmail = $obfuscator->obfuscate('email'); $this->obfuscatedEmail = $obfuscator->obfuscate('email');