Add support for segment displayInManageSubscriptionPage on Subscription management page
MAILPOET-4669
This commit is contained in:
committed by
Aschepikov
parent
48181994d8
commit
e64dc1669f
@@ -9,7 +9,6 @@ use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\Form\Util\FieldNameObfuscator;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Statistics\Track\Unsubscribes;
|
||||
use MailPoet\Subscribers\LinkTokens;
|
||||
use MailPoet\Subscribers\NewSubscriberNotificationMailer;
|
||||
@@ -29,9 +28,6 @@ class Manage {
|
||||
/** @var LinkTokens */
|
||||
private $linkTokens;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var Unsubscribes */
|
||||
private $unsubscribesTracker;
|
||||
|
||||
@@ -61,7 +57,6 @@ class Manage {
|
||||
FieldNameObfuscator $fieldNameObfuscator,
|
||||
LinkTokens $linkTokens,
|
||||
Unsubscribes $unsubscribesTracker,
|
||||
SettingsController $settings,
|
||||
NewSubscriberNotificationMailer $newSubscriberNotificationMailer,
|
||||
WelcomeScheduler $welcomeScheduler,
|
||||
CustomFieldsRepository $customFieldsRepository,
|
||||
@@ -74,7 +69,6 @@ class Manage {
|
||||
$this->fieldNameObfuscator = $fieldNameObfuscator;
|
||||
$this->unsubscribesTracker = $unsubscribesTracker;
|
||||
$this->linkTokens = $linkTokens;
|
||||
$this->settings = $settings;
|
||||
$this->newSubscriberNotificationMailer = $newSubscriberNotificationMailer;
|
||||
$this->welcomeScheduler = $welcomeScheduler;
|
||||
$this->segmentsRepository = $segmentsRepository;
|
||||
@@ -140,7 +134,6 @@ class Manage {
|
||||
if (isset($subscriberData['segments']) && is_array($subscriberData['segments'])) {
|
||||
$segmentsIds = $subscriberData['segments'];
|
||||
}
|
||||
$allowedSegments = $this->settings->get('subscription.segments', false);
|
||||
|
||||
// Unsubscribe from all other segments already subscribed to
|
||||
// but don't change disallowed segments
|
||||
@@ -150,7 +143,7 @@ class Manage {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($allowedSegments && !in_array($segment->getId(), $allowedSegments)) {
|
||||
if (empty($segment->getDisplayInManageSubscriptionPage())) {
|
||||
continue;
|
||||
}
|
||||
if (!in_array($segment->getId(), $segmentsIds)) {
|
||||
@@ -173,15 +166,15 @@ class Manage {
|
||||
}, $subscriberSegments));
|
||||
$newSegmentIds = array_diff($segmentsIds, $currentSegmentIds);
|
||||
|
||||
// Allow subscribing only to allowed segments
|
||||
if ($allowedSegments) {
|
||||
$segmentsIds = array_intersect($segmentsIds, $allowedSegments);
|
||||
}
|
||||
foreach ($segmentsIds as $segmentId) {
|
||||
$segment = $this->segmentsRepository->findOneById($segmentId);
|
||||
if (!$segment) {
|
||||
continue;
|
||||
}
|
||||
// Allow subscribing only to allowed segments
|
||||
if (empty($segment->getDisplayInManageSubscriptionPage())) {
|
||||
continue;
|
||||
}
|
||||
$this->subscriberSegmentRepository->createOrUpdate(
|
||||
$subscriber,
|
||||
$segment,
|
||||
|
@@ -10,7 +10,6 @@ use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Form\Block\Date as FormBlockDate;
|
||||
use MailPoet\Form\Renderer as FormRenderer;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscribers\LinkTokens;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\Util\Url as UrlHelper;
|
||||
@@ -21,9 +20,6 @@ class ManageSubscriptionFormRenderer {
|
||||
const FORM_STATE_SUCCESS = 'success';
|
||||
const FORM_STATE_NOT_SUBMITTED = 'not_submitted';
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var UrlHelper */
|
||||
private $urlHelper;
|
||||
|
||||
@@ -50,7 +46,6 @@ class ManageSubscriptionFormRenderer {
|
||||
|
||||
public function __construct(
|
||||
WPFunctions $wp,
|
||||
SettingsController $settings,
|
||||
UrlHelper $urlHelper,
|
||||
LinkTokens $linkTokens,
|
||||
FormRenderer $formRenderer,
|
||||
@@ -60,7 +55,6 @@ class ManageSubscriptionFormRenderer {
|
||||
SegmentsRepository $segmentsRepository
|
||||
) {
|
||||
$this->wp = $wp;
|
||||
$this->settings = $settings;
|
||||
$this->urlHelper = $urlHelper;
|
||||
$this->linkTokens = $linkTokens;
|
||||
$this->formRenderer = $formRenderer;
|
||||
@@ -227,13 +221,12 @@ class ManageSubscriptionFormRenderer {
|
||||
}
|
||||
|
||||
private function getSegmentField(SubscriberEntity $subscriber): array {
|
||||
$segmentIds = $this->settings->get('subscription.segments', []);
|
||||
|
||||
// Get default segments
|
||||
$criteria = ['type' => SegmentEntity::TYPE_DEFAULT, 'deletedAt' => null];
|
||||
if (!empty($segmentIds)) {
|
||||
$criteria['id'] = $segmentIds;
|
||||
}
|
||||
$criteria = [
|
||||
'type' => SegmentEntity::TYPE_DEFAULT,
|
||||
'deletedAt' => null,
|
||||
'displayInManageSubscriptionPage' => 1,
|
||||
];
|
||||
$segments = $this->segmentsRepository->findBy($criteria, ['name' => Criteria::ASC]);
|
||||
|
||||
$subscribedSegmentIds = [];
|
||||
|
Reference in New Issue
Block a user