HEX
Server: Apache/2
System: Linux s01 6.1.0-34-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64
User: beestg (1003)
PHP: 8.3.25
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/beestg/public_html/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;
  }
}