Add cron job for generating/re-generating template thumbnail files

[MAILPOET-2686]
This commit is contained in:
Rostislav Wolny
2021-10-19 10:31:26 +02:00
committed by Veljko V
parent 58bcca67ed
commit b10bb31321
8 changed files with 56 additions and 0 deletions

View File

@@ -86,5 +86,6 @@ class Daemon {
if ($this->featureSwitch->isSupported(FeaturesController::RE_ENGAGEMENT_EMAIL)) {
yield $this->workersFactory->createReEngagementEmailsSchedulerWorker();
}
yield $this->workersFactory->createNewsletterTemplateThumbnailsWorker();
}
}

View File

@@ -9,6 +9,7 @@ use MailPoet\Cron\Workers\Bounce as BounceWorker;
use MailPoet\Cron\Workers\InactiveSubscribers;
use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
use MailPoet\Cron\Workers\NewsletterTemplateThumbnails;
use MailPoet\Cron\Workers\ReEngagementEmailsScheduler;
use MailPoet\Cron\Workers\Scheduler as SchedulerWorker;
use MailPoet\Cron\Workers\SendingQueue\Migration as MigrationWorker;
@@ -250,6 +251,13 @@ class WordPress {
'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
$sendingQueueActive = (($scheduledQueues || $runningQueues) && !$sendingLimitReached && !$sendingIsPaused);
$bounceSyncActive = ($mpSendingEnabled && ($bounceDueTasks || !$bounceFutureTasks));
@@ -279,6 +287,7 @@ class WordPress {
|| $subscribersCountCacheRecalculationTasks
|| $subscribersLastEngagementTasks
|| $subscribersReEngagementSchedulingTasks
|| $newsletterTemplateThumbnailsTasks
);
}

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

View File

@@ -127,4 +127,9 @@ class WorkersFactory {
public function createSubscribersStatsReportWorker() {
return $this->container->get(SubscribersStatsReport::class);
}
/** @return NewsletterTemplateThumbnails */
public function createNewsletterTemplateThumbnailsWorker() {
return $this->container->get(NewsletterTemplateThumbnails::class);
}
}

View File

@@ -174,6 +174,7 @@ class ContainerConfigurator implements IContainerConfigurator {
$container->autowire(\MailPoet\Cron\Workers\SubscribersLastEngagement::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\NewsletterTemplateThumbnails::class)->setPublic(true);
// Custom field
$container->autowire(\MailPoet\CustomFields\ApiDataSanitizer::class);
$container->autowire(\MailPoet\CustomFields\CustomFieldsRepository::class)->setPublic(true);

View File

@@ -32,6 +32,13 @@ class ThumbnailSaver {
$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 {
if ($template->getReadonly()) {
return $template;

View File

@@ -306,6 +306,8 @@ class DaemonHttpRunnerTest extends \MailPoetTest {
'createSubscribersEngagementScoreWorker' => $worker,
'createSubscribersLastEngagementWorker' => $worker,
'createSubscribersCountCacheRecalculationWorker' => $worker,
'createReEngagementEmailsSchedulerWorker' => $worker,
'createNewsletterTemplateThumbnailsWorker' => $worker,
]);
}
}

View File

@@ -62,6 +62,8 @@ class DaemonTest extends \MailPoetTest {
'createSubscribersEngagementScoreWorker' => $this->createSimpleWorkerMock(),
'createSubscribersLastEngagementWorker' => $this->createSimpleWorkerMock(),
'createSubscribersCountCacheRecalculationWorker' => $this->createSimpleWorkerMock(),
'createReEngagementEmailsSchedulerWorker' => $this->createSimpleWorkerMock(),
'createNewsletterTemplateThumbnailsWorker' => $this->createSimpleWorkerMock(),
]);
}