diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index 159d61e818..59fd0cc24b 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -218,7 +218,8 @@ const itemActions = [ display: function display(segmt) { return !isWooCommerceCustomersSegment(segmt) && segmt.automated_emails_subjects.length === 0 - && segmt.scheduled_emails_subjects.length === 0; + && segmt.scheduled_emails_subjects.length === 0 + && segmt.sending_emails_subjects.length === 0; }, }, { @@ -229,6 +230,7 @@ const itemActions = [ const subjects = [ ...segment.automated_emails_subjects, ...segment.scheduled_emails_subjects, + ...segment.sending_emails_subjects, ]; MailPoet.Notice.error( MailPoet.I18n.t('trashDisallowed').replace( @@ -243,6 +245,7 @@ const itemActions = [ && ( segment.automated_emails_subjects.length > 0 || segment.scheduled_emails_subjects.length > 0 + || segment.sending_emails_subjects.length > 0 ); }, }, @@ -254,6 +257,7 @@ const itemActions = [ const subjects = [ ...segment.automated_emails_subjects, ...segment.scheduled_emails_subjects, + ...segment.sending_emails_subjects, ]; MailPoet.Notice.error( MailPoet.I18n.t('trashDisallowed').replace( @@ -268,6 +272,7 @@ const itemActions = [ && ( segment.automated_emails_subjects.length > 0 || segment.scheduled_emails_subjects.length > 0 + || segment.sending_emails_subjects.length > 0 ); }, }, diff --git a/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php b/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php index 6af6e2df98..85555208fa 100644 --- a/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php +++ b/lib/API/JSON/ResponseBuilders/SegmentsResponseBuilder.php @@ -48,17 +48,19 @@ class SegmentsResponseBuilder { }, $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); + $data[] = $this->buildListingItem($segment, $scheduledNewsletterSubjectsMap, $automatedNewsletterSubjectsMap, $sendingNewsletterSubjectsMap); } return $data; } - private function buildListingItem(SegmentEntity $segment, array $scheduledNewsletterSubjectsMap, array $automatedNewsletterSubjectsMap): array { + private function buildListingItem(SegmentEntity $segment, array $scheduledNewsletterSubjectsMap, array $automatedNewsletterSubjectsMap, array $sendingNewsletterSubjectsMap): 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 a3705b6cbb..49ac2b5abd 100644 --- a/lib/Newsletter/Segment/NewsletterSegmentRepository.php +++ b/lib/Newsletter/Segment/NewsletterSegmentRepository.php @@ -53,4 +53,23 @@ class NewsletterSegmentRepository extends Repository { } 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; + } }