Load list of segments on form editor page using doctrine
[MAILPOET-3164]
This commit is contained in:
committed by
Veljko V
parent
09fa34f6e6
commit
ade48fc359
@ -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 [
|
||||
|
@ -59,7 +59,7 @@ class SegmentSubscribersRepository {
|
||||
* This method is fetches list of all segments basic data and count of subscribed subscribers.
|
||||
* @return array<array{id: string, name: string, type: string, subscribers: int}>
|
||||
*/
|
||||
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();
|
||||
|
||||
|
Reference in New Issue
Block a user