Server IP : 104.21.14.103 / Your IP : 18.190.253.43 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/thread-self/root/proc/thread-self/root/home/giankuin/thietke365.net/wp-content/plugins/mailpoet/lib/Newsletter/Renderer/Blocks/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Newsletter\Renderer\Blocks; if (!defined('ABSPATH')) exit; use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterPostEntity; use MailPoet\Newsletter\AutomatedLatestContent; use MailPoet\Newsletter\BlockPostQuery; use MailPoet\Newsletter\NewsletterPostsRepository; class AutomatedLatestContentBlock { /** * Cache for rendered posts in newsletter. * Used to prevent duplicate post in case a newsletter contains 2 ALC blocks * @var array */ public $renderedPostsInNewsletter; /** @var AutomatedLatestContent */ private $ALC; /** @var NewsletterPostsRepository */ private $newsletterPostsRepository; public function __construct( NewsletterPostsRepository $newsletterPostsRepository, AutomatedLatestContent $ALC ) { $this->renderedPostsInNewsletter = []; $this->ALC = $ALC; $this->newsletterPostsRepository = $newsletterPostsRepository; } public function render(NewsletterEntity $newsletter, $args) { $newerThanTimestamp = false; $newsletterId = false; if ($newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION_HISTORY) { $parent = $newsletter->getParent(); if ($parent instanceof NewsletterEntity) { $newsletterId = $parent->getId(); $lastPost = $this->newsletterPostsRepository->findOneBy(['newsletter' => $parent], ['createdAt' => 'desc']); if ($lastPost instanceof NewsletterPostEntity) { $newerThanTimestamp = $lastPost->getCreatedAt(); } } } $postsToExclude = $this->getRenderedPosts((int)$newsletterId); $query = new BlockPostQuery([ 'args' => $args, 'postsToExclude' => $postsToExclude, 'newsletterId' => $newsletterId, 'newerThanTimestamp' => $newerThanTimestamp, 'dynamic' => true, ]); $aLCPosts = $this->ALC->getPosts($query); foreach ($aLCPosts as $post) { $postsToExclude[] = $post->ID; } $this->setRenderedPosts((int)$newsletterId, $postsToExclude); return $this->ALC->transformPosts($args, $aLCPosts); } private function getRenderedPosts(int $newsletterId) { return $this->renderedPostsInNewsletter[$newsletterId] ?? []; } private function setRenderedPosts(int $newsletterId, array $posts) { return $this->renderedPostsInNewsletter[$newsletterId] = $posts; } }