diff --git a/mailpoet/lib/Subscription/Manage.php b/mailpoet/lib/Subscription/Manage.php index 767edbe3bd..c49c37aea4 100644 --- a/mailpoet/lib/Subscription/Manage.php +++ b/mailpoet/lib/Subscription/Manage.php @@ -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, diff --git a/mailpoet/lib/Subscription/ManageSubscriptionFormRenderer.php b/mailpoet/lib/Subscription/ManageSubscriptionFormRenderer.php index a9ff71fe9b..e420ee92de 100644 --- a/mailpoet/lib/Subscription/ManageSubscriptionFormRenderer.php +++ b/mailpoet/lib/Subscription/ManageSubscriptionFormRenderer.php @@ -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 = [];