Leave filters out of refactoring
[MAILPOET-2657]
This commit is contained in:
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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');
|
||||||
|
Reference in New Issue
Block a user