diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index 87ec69fa93..96d739ab6c 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -216,64 +216,7 @@ const itemActions = [ name: 'trash', className: 'mailpoet-hide-on-mobile', display: function display(segmt) { - return !isWooCommerceCustomersSegment(segmt) - && segmt.automated_emails_subjects.length === 0 - && segmt.scheduled_emails_subjects.length === 0 - && segmt.sending_emails_subjects.length === 0; - }, - }, - { - name: 'delete', - className: 'mailpoet-hide-on-mobile', - label: MailPoet.I18n.t('moveToTrash'), - onClick: function onClick(segment) { - const subjects = [ - ...segment.automated_emails_subjects, - ...segment.scheduled_emails_subjects, - ...segment.sending_emails_subjects, - ]; - MailPoet.Notice.error( - MailPoet.I18n.t('trashDisallowed').replace( - '%$1s', - subjects.map((subject) => `'${subject}'`).join(', ') - ), - { scroll: true } - ); - }, - display: function display(segment) { - return !isSpecialSegment(segment) - && ( - segment.automated_emails_subjects.length > 0 - || segment.scheduled_emails_subjects.length > 0 - || segment.sending_emails_subjects.length > 0 - ); - }, - }, - { - name: 'delete_wp_users', - className: 'mailpoet-hide-on-mobile', - label: MailPoet.I18n.t('trashAndDisable'), - onClick: function onClick(segment) { - const subjects = [ - ...segment.automated_emails_subjects, - ...segment.scheduled_emails_subjects, - ...segment.sending_emails_subjects, - ]; - MailPoet.Notice.error( - MailPoet.I18n.t('trashDisallowed').replace( - '%$1s', - subjects.map((subject) => `'${subject}'`).join(', ') - ), - { scroll: true } - ); - }, - display: function display(segment) { - return isWPUsersSegment(segment) - && ( - segment.automated_emails_subjects.length > 0 - || segment.scheduled_emails_subjects.length > 0 - || segment.sending_emails_subjects.length > 0 - ); + return !isWooCommerceCustomersSegment(segmt); }, }, ]; diff --git a/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php b/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php index 85555208fa..3c31b9e780 100644 --- a/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php @@ -3,7 +3,6 @@ namespace MailPoet\API\JSON\ResponseBuilders; use MailPoet\Entities\SegmentEntity; -use MailPoet\Newsletter\Segment\NewsletterSegmentRepository; use MailPoet\Segments\SegmentSubscribersRepository; use MailPoet\WP\Functions; @@ -13,19 +12,14 @@ class SegmentsResponseBuilder { /** @var Functions */ private $wp; - /** @var NewsletterSegmentRepository */ - private $newsletterSegmentRepository; - /** @var SegmentSubscribersRepository */ private $segmentSubscriberRepository; public function __construct( Functions $wp, - SegmentSubscribersRepository $segmentSubscriberRepository, - NewsletterSegmentRepository $newsletterSegmentRepository + SegmentSubscribersRepository $segmentSubscriberRepository ) { $this->wp = $wp; - $this->newsletterSegmentRepository = $newsletterSegmentRepository; $this->segmentSubscriberRepository = $segmentSubscriberRepository; } @@ -43,24 +37,15 @@ class SegmentsResponseBuilder { public function buildForListing(array $segments): array { $data = []; - $segmendIds = array_map(function(SegmentEntity $segment): int { - return (int)$segment->getId(); - }, $segments); - $scheduledNewsletterSubjectsMap = $this->newsletterSegmentRepository->getScheduledNewsletterSubjectsBySegmentIds($segmendIds); - $automatedNewsletterSubjectsMap = $this->newsletterSegmentRepository->getAutomatedEmailSubjectsBySegmentIds($segmendIds); - $sendingNewsletterSubjectsMap = $this->newsletterSegmentRepository->getSendingEmailSubjectsBySegmentIds($segmendIds); foreach ($segments as $segment) { - $data[] = $this->buildListingItem($segment, $scheduledNewsletterSubjectsMap, $automatedNewsletterSubjectsMap, $sendingNewsletterSubjectsMap); + $data[] = $this->buildListingItem($segment); } return $data; } - private function buildListingItem(SegmentEntity $segment, array $scheduledNewsletterSubjectsMap, array $automatedNewsletterSubjectsMap, array $sendingNewsletterSubjectsMap): array { + private function buildListingItem(SegmentEntity $segment): array { $data = $this->build($segment); - $data['automated_emails_subjects'] = $automatedNewsletterSubjectsMap[$segment->getId()] ?? []; - $data['scheduled_emails_subjects'] = $scheduledNewsletterSubjectsMap[$segment->getId()] ?? []; - $data['sending_emails_subjects'] = $sendingNewsletterSubjectsMap[$segment->getId()] ?? []; $data['subscribers_count'] = $this->segmentSubscriberRepository->getSubscribersStatisticsCount($segment); $data['subscribers_url'] = $this->wp->adminUrl( 'admin.php?page=mailpoet-subscribers#/filter[segment=' . $segment->getId() . ']' diff --git a/lib/Newsletter/Segment/NewsletterSegmentRepository.php b/lib/Newsletter/Segment/NewsletterSegmentRepository.php index d4a07566a6..52a9d3ea14 100644 --- a/lib/Newsletter/Segment/NewsletterSegmentRepository.php +++ b/lib/Newsletter/Segment/NewsletterSegmentRepository.php @@ -39,63 +39,4 @@ class NewsletterSegmentRepository extends Repository { } return $nameMap; } - - public function getAutomatedEmailSubjectsBySegmentIds(array $segmentIds): array { - $results = $this->doctrineRepository->createQueryBuilder('ns') - ->join('ns.newsletter', 'n') - ->select('IDENTITY(ns.segment) AS segment_id, n.subject') - ->where('n.type IN (:types)') - ->setParameter('types', [ - NewsletterEntity::TYPE_AUTOMATIC, - NewsletterEntity::TYPE_WELCOME, - NewsletterEntity::TYPE_NOTIFICATION, - ]) - ->andWhere('ns.segment IN (:segmentIds)') - ->setParameter('segmentIds', $segmentIds) - ->getQuery() - ->getResult(); - - $nameMap = []; - foreach ($results as $result) { - $nameMap[(string)$result['segment_id']][] = $result['subject']; - } - return $nameMap; - } - - public function getScheduledNewsletterSubjectsBySegmentIds(array $segmentIds): array { - $results = $this->doctrineRepository->createQueryBuilder('ns') - ->select('IDENTITY(ns.segment) AS segment_id, n.subject') - ->join('ns.newsletter', 'n') - ->where('n.status = :scheduled') - ->andWhere('ns.segment IN (:segmentIds)') - ->setParameter('scheduled', NewsletterEntity::STATUS_SCHEDULED) - ->setParameter('segmentIds', $segmentIds) - ->getQuery() - ->getResult(); - - $nameMap = []; - foreach ($results as $result) { - $nameMap[(string)$result['segment_id']][] = $result['subject']; - } - return $nameMap; - } - - public function getSendingEmailSubjectsBySegmentIds(array $segmentIds): array { - $results = $this->doctrineRepository->createQueryBuilder('ns') - ->select('IDENTITY(ns.segment) AS segment_id, n.subject') - ->join('ns.newsletter', 'n') - ->join('n.queues', 'q') - ->join('q.task', 't') - ->where('t.status IS NULL') - ->andWhere('ns.segment IN (:segmentIds)') - ->setParameter('segmentIds', $segmentIds) - ->getQuery() - ->getResult(); - - $nameMap = []; - foreach ($results as $result) { - $nameMap[(string)$result['segment_id']][] = $result['subject']; - } - return $nameMap; - } } diff --git a/tests/integration/API/JSON/ResponseBuilders/SegmentsResponseBuilderTest.php b/tests/integration/API/JSON/ResponseBuilders/SegmentsResponseBuilderTest.php index 8ac2d78ab3..71460b62f2 100644 --- a/tests/integration/API/JSON/ResponseBuilders/SegmentsResponseBuilderTest.php +++ b/tests/integration/API/JSON/ResponseBuilders/SegmentsResponseBuilderTest.php @@ -3,8 +3,6 @@ namespace MailPoet\API\JSON\ResponseBuilders; use MailPoet\DI\ContainerWrapper; -use MailPoet\Entities\NewsletterEntity; -use MailPoet\Entities\NewsletterSegmentEntity; use MailPoet\Entities\SegmentEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberSegmentEntity; @@ -49,14 +47,6 @@ class SegmentsResponseBuilderTest extends \MailPoetTest { $subscriberSegment = new SubscriberSegmentEntity($segment, $subscriber, SubscriberEntity::STATUS_SUBSCRIBED); $em->persist($subscriberSegment); - $scheduledNewsletter = new NewsletterEntity(); - $scheduledNewsletter->setSubject('subject1'); - $scheduledNewsletter->setType(NewsletterEntity::TYPE_STANDARD); - $scheduledNewsletter->setStatus(NewsletterEntity::STATUS_SCHEDULED); - $em->persist($scheduledNewsletter); - $ns = new NewsletterSegmentEntity($scheduledNewsletter, $segment); - $em->persist($ns); - $em->flush(); $responseBuilder = $di->get(SegmentsResponseBuilder::class); @@ -66,8 +56,5 @@ class SegmentsResponseBuilderTest extends \MailPoetTest { expect($response[0]['type'])->equals(SegmentEntity::TYPE_DEFAULT); expect($response[0]['subscribers_url'])->startsWith('http'); expect($response[0]['subscribers_count']['subscribed'])->equals('1'); - expect($response[0]['scheduled_emails_subjects'])->array(); - expect($response[0]['scheduled_emails_subjects'])->notEmpty(); - expect($response[0]['scheduled_emails_subjects'])->contains('subject1'); } } diff --git a/views/segments.html b/views/segments.html index b37b2f3aac..043ebcaecd 100644 --- a/views/segments.html +++ b/views/segments.html @@ -79,7 +79,6 @@ 'restore': __('Restore'), 'deletePermanently': __('Delete permanently'), 'save': __('Save'), - 'trashDisallowed': _x('List cannot be deleted because it’s used for %$1s email', 'Alert shown when trying to delete segment, which is assigned to any automatic emails.'), 'trashAndDisable': __('Trash and disable'), 'restoreAndEnable': __('Restore and enable'),