Add cron job for generating/re-generating template thumbnail files
[MAILPOET-2686]
This commit is contained in:
committed by
Veljko V
parent
58bcca67ed
commit
b10bb31321
@@ -86,5 +86,6 @@ class Daemon {
|
|||||||
if ($this->featureSwitch->isSupported(FeaturesController::RE_ENGAGEMENT_EMAIL)) {
|
if ($this->featureSwitch->isSupported(FeaturesController::RE_ENGAGEMENT_EMAIL)) {
|
||||||
yield $this->workersFactory->createReEngagementEmailsSchedulerWorker();
|
yield $this->workersFactory->createReEngagementEmailsSchedulerWorker();
|
||||||
}
|
}
|
||||||
|
yield $this->workersFactory->createNewsletterTemplateThumbnailsWorker();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ use MailPoet\Cron\Workers\Bounce as BounceWorker;
|
|||||||
use MailPoet\Cron\Workers\InactiveSubscribers;
|
use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||||
use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
|
use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
|
||||||
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
|
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
|
||||||
|
use MailPoet\Cron\Workers\NewsletterTemplateThumbnails;
|
||||||
use MailPoet\Cron\Workers\ReEngagementEmailsScheduler;
|
use MailPoet\Cron\Workers\ReEngagementEmailsScheduler;
|
||||||
use MailPoet\Cron\Workers\Scheduler as SchedulerWorker;
|
use MailPoet\Cron\Workers\Scheduler as SchedulerWorker;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Migration as MigrationWorker;
|
use MailPoet\Cron\Workers\SendingQueue\Migration as MigrationWorker;
|
||||||
@@ -250,6 +251,13 @@ class WordPress {
|
|||||||
'status' => ['null', ScheduledTask::STATUS_SCHEDULED],
|
'status' => ['null', ScheduledTask::STATUS_SCHEDULED],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// newsletter template thumbnails
|
||||||
|
$newsletterTemplateThumbnailsTasks = $this->getTasksCount([
|
||||||
|
'type' => NewsletterTemplateThumbnails::TASK_TYPE,
|
||||||
|
'scheduled_in' => [self::SCHEDULED_IN_THE_PAST],
|
||||||
|
'status' => ['null', ScheduledTask::STATUS_SCHEDULED],
|
||||||
|
]);
|
||||||
|
|
||||||
// check requirements for each worker
|
// check requirements for each worker
|
||||||
$sendingQueueActive = (($scheduledQueues || $runningQueues) && !$sendingLimitReached && !$sendingIsPaused);
|
$sendingQueueActive = (($scheduledQueues || $runningQueues) && !$sendingLimitReached && !$sendingIsPaused);
|
||||||
$bounceSyncActive = ($mpSendingEnabled && ($bounceDueTasks || !$bounceFutureTasks));
|
$bounceSyncActive = ($mpSendingEnabled && ($bounceDueTasks || !$bounceFutureTasks));
|
||||||
@@ -279,6 +287,7 @@ class WordPress {
|
|||||||
|| $subscribersCountCacheRecalculationTasks
|
|| $subscribersCountCacheRecalculationTasks
|
||||||
|| $subscribersLastEngagementTasks
|
|| $subscribersLastEngagementTasks
|
||||||
|| $subscribersReEngagementSchedulingTasks
|
|| $subscribersReEngagementSchedulingTasks
|
||||||
|
|| $newsletterTemplateThumbnailsTasks
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
29
lib/Cron/Workers/NewsletterTemplateThumbnails.php
Normal file
29
lib/Cron/Workers/NewsletterTemplateThumbnails.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace MailPoet\Cron\Workers;
|
||||||
|
|
||||||
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
|
use MailPoet\NewsletterTemplates\ThumbnailSaver;
|
||||||
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
|
class NewsletterTemplateThumbnails extends SimpleWorker {
|
||||||
|
const TASK_TYPE = 'newsletter_templates_thumbnails';
|
||||||
|
const AUTOMATIC_SCHEDULING = false;
|
||||||
|
const SUPPORT_MULTIPLE_INSTANCES = false;
|
||||||
|
|
||||||
|
/** @var ThumbnailSaver */
|
||||||
|
private $thumbnailSaver;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
ThumbnailSaver $thumbnailSaver,
|
||||||
|
WPFunctions $wp
|
||||||
|
) {
|
||||||
|
parent::__construct($wp);
|
||||||
|
$this->thumbnailSaver = $thumbnailSaver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function processTaskStrategy(ScheduledTaskEntity $task, $timer) {
|
||||||
|
$this->thumbnailSaver->ensureTemplateThumbnailsForAll();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@@ -127,4 +127,9 @@ class WorkersFactory {
|
|||||||
public function createSubscribersStatsReportWorker() {
|
public function createSubscribersStatsReportWorker() {
|
||||||
return $this->container->get(SubscribersStatsReport::class);
|
return $this->container->get(SubscribersStatsReport::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return NewsletterTemplateThumbnails */
|
||||||
|
public function createNewsletterTemplateThumbnailsWorker() {
|
||||||
|
return $this->container->get(NewsletterTemplateThumbnails::class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -174,6 +174,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Cron\Workers\SubscribersLastEngagement::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Workers\SubscribersLastEngagement::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\Workers\SubscribersCountCacheRecalculation::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Workers\SubscribersCountCacheRecalculation::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Cron\Workers\SubscribersStatsReport::class)->setPublic(true);
|
$container->autowire(\MailPoet\Cron\Workers\SubscribersStatsReport::class)->setPublic(true);
|
||||||
|
$container->autowire(\MailPoet\Cron\Workers\NewsletterTemplateThumbnails::class)->setPublic(true);
|
||||||
// Custom field
|
// Custom field
|
||||||
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
|
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
|
||||||
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);
|
||||||
|
@@ -32,6 +32,13 @@ class ThumbnailSaver {
|
|||||||
$this->baseUrl = Env::$tempUrl;
|
$this->baseUrl = Env::$tempUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function ensureTemplateThumbnailsForAll() {
|
||||||
|
$templates = $this->repository->findBy(['readonly' => false]);
|
||||||
|
foreach ($templates as $template) {
|
||||||
|
$this->ensureTemplateThumbnailFile($template);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function ensureTemplateThumbnailFile(NewsletterTemplateEntity $template): NewsletterTemplateEntity {
|
public function ensureTemplateThumbnailFile(NewsletterTemplateEntity $template): NewsletterTemplateEntity {
|
||||||
if ($template->getReadonly()) {
|
if ($template->getReadonly()) {
|
||||||
return $template;
|
return $template;
|
||||||
|
@@ -306,6 +306,8 @@ class DaemonHttpRunnerTest extends \MailPoetTest {
|
|||||||
'createSubscribersEngagementScoreWorker' => $worker,
|
'createSubscribersEngagementScoreWorker' => $worker,
|
||||||
'createSubscribersLastEngagementWorker' => $worker,
|
'createSubscribersLastEngagementWorker' => $worker,
|
||||||
'createSubscribersCountCacheRecalculationWorker' => $worker,
|
'createSubscribersCountCacheRecalculationWorker' => $worker,
|
||||||
|
'createReEngagementEmailsSchedulerWorker' => $worker,
|
||||||
|
'createNewsletterTemplateThumbnailsWorker' => $worker,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -62,6 +62,8 @@ class DaemonTest extends \MailPoetTest {
|
|||||||
'createSubscribersEngagementScoreWorker' => $this->createSimpleWorkerMock(),
|
'createSubscribersEngagementScoreWorker' => $this->createSimpleWorkerMock(),
|
||||||
'createSubscribersLastEngagementWorker' => $this->createSimpleWorkerMock(),
|
'createSubscribersLastEngagementWorker' => $this->createSimpleWorkerMock(),
|
||||||
'createSubscribersCountCacheRecalculationWorker' => $this->createSimpleWorkerMock(),
|
'createSubscribersCountCacheRecalculationWorker' => $this->createSimpleWorkerMock(),
|
||||||
|
'createReEngagementEmailsSchedulerWorker' => $this->createSimpleWorkerMock(),
|
||||||
|
'createNewsletterTemplateThumbnailsWorker' => $this->createSimpleWorkerMock(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user