PHP 8.2.31
Preview: AutomaticEmailsRepository.php Size: 2.10 KB
/home/nshryvcy/himaltourism.com/wp-content/plugins/mailpoet/lib/Newsletter/AutomaticEmailsRepository.php

<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing

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);
  }
}

Directory Contents

Dirs: 12 × Files: 12

Name Size Perms Modified Actions
Editor DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Links DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Listing DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Options DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Preview DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Renderer DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Scheduler DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Segment DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
Sending DIR
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
- drwxr-xr-x 2023-04-04 05:35:40
Edit Download
1.69 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
3.95 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
2.10 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
5.76 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
0 B lrw-r--r-- 2023-04-04 05:35:40
Edit Download
1.08 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
2.85 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
441 B lrw-r--r-- 2023-04-04 05:35:40
Edit Download
15.33 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
22.10 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
3.58 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
2.25 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).