<?php namespace MailPoet\Newsletter; if (!defined('ABSPATH')) exit; use MailPoet\Doctrine\Repository; use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\SendingQueueEntity; use MailPoetVendor\Doctrine\ORM\QueryBuilder; /** * @extends Repository<NewsletterEntity> */ class AutomaticEmailsRepository extends Repository { protected function getEntityClassName() { return NewsletterEntity::class; } public function wasScheduledForSubscriber(int $newsletterId, int $subscriberId): bool { $query = $this->doctrineRepository->createQueryBuilder('n') ->select('COUNT(q)') ->from(SendingQueueEntity::class, 'q'); $query = $this->getAllQueuesForSubscscriberQuery($query, $newsletterId, $subscriberId); $count = $query->getQuery() ->getSingleScalarResult() ?: 0; return ((int)$count) > 0; } private function getAllQueuesForSubscscriberQuery(QueryBuilder $query, int $newsletterId, int $subscriberId): QueryBuilder { return $query ->join('q.task', 't') ->join('t.subscribers', 's') ->andWhere('q.newsletter = :newsletterId') ->andWhere('s.subscriber = :subscriberId') ->setParameter('newsletterId', $newsletterId) ->setParameter('subscriberId', $subscriberId); } /** * Search products/categories in meta if all of the ordered products have already been sent to the subscriber. */ public function alreadySentAllProducts(int $newsletterId, int $subscriberId, string $orderedKey, array $ordered): bool { $query = $this->doctrineRepository->createQueryBuilder('n') ->select('q') ->from(SendingQueueEntity::class, 'q'); $queues = $this->getAllQueuesForSubscscriberQuery($query, $newsletterId, $subscriberId) ->getQuery() ->getResult(); $sent = []; foreach ($queues as $queue) { $meta = $queue->getMeta(); if (isset($meta[$orderedKey])) { $sent = array_merge($sent, $meta[$orderedKey]); } } $notSentProducts = array_diff($ordered, $sent); return empty($notSentProducts); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Editor | Folder | 0755 |
|
|
Links | Folder | 0755 |
|
|
Listing | Folder | 0755 |
|
|
Options | Folder | 0755 |
|
|
Preview | Folder | 0755 |
|
|
Renderer | Folder | 0755 |
|
|
Scheduler | Folder | 0755 |
|
|
Segment | Folder | 0755 |
|
|
Sending | Folder | 0755 |
|
|
Shortcodes | Folder | 0755 |
|
|
Statistics | Folder | 0755 |
|
|
ViewInBrowser | Folder | 0755 |
|
|
ApiDataSanitizer.php | File | 1.6 KB | 0644 |
|
AutomatedLatestContent.php | File | 6.87 KB | 0644 |
|
AutomaticEmailsRepository.php | File | 2.01 KB | 0644 |
|
NewsletterHtmlSanitizer.php | File | 1.98 KB | 0644 |
|
NewsletterPostsRepository.php | File | 347 B | 0644 |
|
NewsletterSaveController.php | File | 14.32 KB | 0644 |
|
NewslettersRepository.php | File | 16.64 KB | 0644 |
|
Url.php | File | 2.95 KB | 0644 |
|
index.php | File | 0 B | 0644 |
|