PHP 8.2.31
Preview: Posts.php Size: 2.41 KB
/home/nshryvcy/himaltourism.com/wp-content/plugins/mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Posts.php

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

namespace MailPoet\Cron\Workers\SendingQueue\Tasks;

if (!defined('ABSPATH')) exit;


use MailPoet\DI\ContainerWrapper;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterPostEntity;
use MailPoet\Logging\LoggerFactory;
use MailPoet\Newsletter\NewsletterPostsRepository;

class Posts {
  /** @var LoggerFactory */
  private $loggerFactory;

  /** @var NewsletterPostsRepository */
  private $newsletterPostRepository;

  public function __construct() {
    $this->loggerFactory = LoggerFactory::getInstance();
    $this->newsletterPostRepository = ContainerWrapper::getInstance()->get(NewsletterPostsRepository::class);
  }

  public function extractAndSave($renderedNewsletter, NewsletterEntity $newsletter): bool {
    if ($newsletter->getType() !== NewsletterEntity::TYPE_NOTIFICATION_HISTORY) {
      return false;
    }
    $this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
      'extract and save posts - before',
      ['newsletter_id' => $newsletter->getId()]
    );
    preg_match_all(
      '/data-post-id="(\d+)"/ism',
      $renderedNewsletter['html'],
      $matchedPostsIds);
    $matchedPostsIds = $matchedPostsIds[1];
    if (!count($matchedPostsIds)) {
      return false;
    }
    $parent = $newsletter->getParent(); // parent post notification
    if (!$parent instanceof NewsletterEntity) {
      $this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
        'parent post has not been found',
        ['newsletter_id' => $newsletter->getId()]
      );
      return false;
    }
    foreach ($matchedPostsIds as $postId) {
      $newsletterPost = new NewsletterPostEntity($parent, $postId);
      $this->newsletterPostRepository->persist($newsletterPost);
    }
    $this->newsletterPostRepository->flush();
    $this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->info(
      'extract and save posts - after',
      ['newsletter_id' => $newsletter->getId(), 'matched_posts_ids' => $matchedPostsIds]
    );
    return true;
  }

  public function getAlcPostsCount($renderedNewsletter, NewsletterEntity $newsletter) {
    $templatePostsCount = substr_count($newsletter->getContent(), 'data-post-id');
    $newsletterPostsCount = substr_count($renderedNewsletter['html'], 'data-post-id');
    return $newsletterPostsCount - $templatePostsCount;
  }
}

Directory Contents

Dirs: 0 × Files: 6

Name Size Perms Modified Actions
0 B lrw-r--r-- 2023-04-04 05:35:40
Edit Download
3.50 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
2.49 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
12.23 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
2.41 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download
1.44 KB lrw-r--r-- 2023-04-04 05:35:40
Edit Download

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