Remove old model from Segments admin page

[MAILPOET-4339]
This commit is contained in:
Jan Lysý
2022-07-12 10:16:45 +02:00
committed by Veljko V
parent 53a935fae9
commit 1a58842c26
2 changed files with 31 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer;
use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder;
use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder;
use MailPoet\Cache\TransientCache;
use MailPoet\Config\Installer;
use MailPoet\Config\ServicesChecker;
@@ -11,7 +12,7 @@ use MailPoet\CustomFields\CustomFieldsRepository;
use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Entities\SegmentEntity;
use MailPoet\Listing\PageLimit;
use MailPoet\Models\Newsletter;
use MailPoet\Newsletter\NewslettersRepository;
use MailPoet\Segments\SegmentDependencyValidator;
use MailPoet\Segments\SegmentsRepository;
use MailPoet\Services\Bridge;
@@ -60,6 +61,12 @@ class Segments {
/** @var SegmentsRepository */
private $segmentsRepository;
/** @var NewslettersRepository */
private $newslettersRepository;
/** @var NewslettersResponseBuilder */
private $newslettersResponseBuilder;
/** @var TrackingConfig */
private $trackingConfig;
@@ -75,6 +82,8 @@ class Segments {
CustomFieldsResponseBuilder $customFieldsResponseBuilder,
SegmentDependencyValidator $segmentDependencyValidator,
SegmentsRepository $segmentsRepository,
NewslettersRepository $newslettersRepository,
NewslettersResponseBuilder $newslettersResponseBuilder,
TrackingConfig $trackingConfig,
TransientCache $transientCache
) {
@@ -90,7 +99,9 @@ class Segments {
$this->customFieldsResponseBuilder = $customFieldsResponseBuilder;
$this->transientCache = $transientCache;
$this->segmentsRepository = $segmentsRepository;
$this->newslettersRepository = $newslettersRepository;
$this->trackingConfig = $trackingConfig;
$this->newslettersResponseBuilder = $newslettersResponseBuilder;
}
public function render() {
@@ -131,10 +142,7 @@ class Segments {
];
}, array_keys($wpRoles), $wpRoles);
$data['newsletters_list'] = Newsletter::select(['id', 'subject', 'sent_at'])
->whereNull('deleted_at')
->where('type', Newsletter::TYPE_STANDARD)
->orderByExpr('ISNULL(sent_at) DESC, sent_at DESC')->findArray();
$data['newsletters_list'] = $this->newslettersResponseBuilder->buildForListing($this->newslettersRepository->getStandardNewsletterList());
$data['static_segments_list'] = [];
$criteria = new Criteria();

View File

@@ -422,6 +422,24 @@ class NewslettersRepository extends Repository {
return $result;
}
/**
* Returns standard newsletters ordered by sentAt
* @return NewsletterEntity[]
*/
public function getStandardNewsletterList(): array {
return $this->entityManager->createQueryBuilder()
->select('n')
->addSelect('CASE WHEN n.sentAt IS NULL THEN 1 ELSE 0 END as HIDDEN sent_at_is_null')
->from(NewsletterEntity::class, 'n')
->where('n.type = :typeStandard')
->andWhere('n.deletedAt IS NULL')
->orderBy('sent_at_is_null', 'DESC')
->addOrderBy('n.sentAt', 'DESC')
->setParameter('typeStandard', NewsletterEntity::TYPE_STANDARD)
->getQuery()
->getResult();
}
public function prefetchOptions(array $newsletters) {
$this->entityManager->createQueryBuilder()
->select('PARTIAL n.{id}, o, opf')