diff --git a/lib/AdminPages/Pages/FormEditor.php b/lib/AdminPages/Pages/FormEditor.php index ac682a0273..0e6909a982 100644 --- a/lib/AdminPages/Pages/FormEditor.php +++ b/lib/AdminPages/Pages/FormEditor.php @@ -7,6 +7,7 @@ use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder; use MailPoet\Config\Localizer; use MailPoet\CustomFields\CustomFieldsRepository; use MailPoet\Entities\FormEntity; +use MailPoet\Entities\SegmentEntity; use MailPoet\Form\Block; use MailPoet\Form\FormFactory; use MailPoet\Form\Renderer as FormRenderer; @@ -74,9 +75,9 @@ use MailPoet\Form\Templates\Templates\Template7Widget; use MailPoet\Form\Util\CustomFonts; use MailPoet\Form\Util\Export; use MailPoet\Models\Form; -use MailPoet\Models\Segment; use MailPoet\Router\Endpoints\FormPreview; use MailPoet\Router\Router; +use MailPoet\Segments\SegmentSubscribersRepository; use MailPoet\Settings\Pages; use MailPoet\Settings\UserFlagsController; use MailPoet\WP\AutocompletePostListLoader as WPPostListLoader; @@ -116,6 +117,9 @@ class FormEditor { /** @var WPPostListLoader */ private $wpPostListLoader; + /** @var SegmentSubscribersRepository */ + private $segmentSubscribersRepository; + private $activeTemplates = [ FormEntity::DISPLAY_TYPE_POPUP => [ Template1Popup::ID, @@ -200,7 +204,8 @@ class FormEditor { Localizer $localizer, UserFlagsController $userFlags, WPPostListLoader $wpPostListLoader, - TemplateRepository $templateRepository + TemplateRepository $templateRepository, + SegmentSubscribersRepository $segmentSubscribersRepository ) { $this->pageRenderer = $pageRenderer; $this->customFieldsRepository = $customFieldsRepository; @@ -213,6 +218,7 @@ class FormEditor { $this->templatesRepository = $templateRepository; $this->userFlags = $userFlags; $this->wpPostListLoader = $wpPostListLoader; + $this->segmentSubscribersRepository = $segmentSubscribersRepository; } public function render() { @@ -234,7 +240,7 @@ class FormEditor { 'shortcode' => Export::get('shortcode', $form), ], 'mailpoet_pages' => Pages::getMailPoetPages(), - 'segments' => Segment::getSegmentsWithSubscriberCount(), + 'segments' => $this->segmentSubscribersRepository->getSimpleSegmentListWithSubscribersCounts(SegmentEntity::TYPE_DEFAULT), 'styles' => $this->formRenderer->getCustomStyles($form), 'date_types' => array_map(function ($label, $value) { return [ diff --git a/lib/Segments/SegmentSubscribersRepository.php b/lib/Segments/SegmentSubscribersRepository.php index cf9dead9c6..2d73592cb1 100644 --- a/lib/Segments/SegmentSubscribersRepository.php +++ b/lib/Segments/SegmentSubscribersRepository.php @@ -59,7 +59,7 @@ class SegmentSubscribersRepository { * This method is fetches list of all segments basic data and count of subscribed subscribers. * @return array */ - public function getSimpleSegmentListWithSubscribersCounts(): array { + public function getSimpleSegmentListWithSubscribersCounts(string $type = null): array { $subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName(); $subscribersSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName(); $segmentsTable = $this->entityManager->getClassMetadata(SegmentEntity::class)->getTableName(); @@ -82,6 +82,13 @@ class SegmentSubscribersRepository { ->addGroupBy('segments.type') ->orderBy('segments.name') ->setParameter('statusSubscribed', SubscriberEntity::STATUS_SUBSCRIBED); + + if ($type) { + $segmentsDataQuery + ->andWhere('segments.type = :typeParam') + ->setParameter('typeParam', $type); + } + $statement = $this->executeQuery($segmentsDataQuery); $segments = $statement->fetchAll();