From bbde4b1c1c9d9f839b35e9741e7531acb6e3a96a Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Tue, 7 Apr 2020 09:48:15 +0200 Subject: [PATCH] Mark all toOne associations in Stats Notification nullable [MAILPOET-2818] --- lib/Cron/Workers/StatsNotifications/Worker.php | 9 ++++++++- lib/Entities/StatsNotificationEntity.php | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/Cron/Workers/StatsNotifications/Worker.php b/lib/Cron/Workers/StatsNotifications/Worker.php index a5e92b99d9..37afdf9e9c 100644 --- a/lib/Cron/Workers/StatsNotifications/Worker.php +++ b/lib/Cron/Workers/StatsNotifications/Worker.php @@ -100,7 +100,11 @@ class Worker { throw $e; } } finally { - $this->markTaskAsFinished($statsNotificationEntity->getTask()); + $task = $statsNotificationEntity->getTask(); + if ($task instanceof ScheduledTask) { + $this->markTaskAsFinished($task); + } + } $this->cronHelper->enforceExecutionLimit($timer); } @@ -108,6 +112,9 @@ class Worker { private function constructNewsletter(StatsNotificationEntity $statsNotificationEntity) { $newsletter = $statsNotificationEntity->getNewsletter(); + if (!$newsletter instanceof NewsletterEntity) { + throw new \RuntimeException('Missing newsletter entity for statistic notification.'); + } $link = $this->newsletterLinkRepository->findTopLinkForNewsletter((int)$newsletter->getId()); $context = $this->prepareContext($newsletter, $link); $subject = $newsletter->getLatestQueue()->getNewsletterRenderedSubject(); diff --git a/lib/Entities/StatsNotificationEntity.php b/lib/Entities/StatsNotificationEntity.php index 673ed9a4f6..35728ebc0d 100644 --- a/lib/Entities/StatsNotificationEntity.php +++ b/lib/Entities/StatsNotificationEntity.php @@ -20,13 +20,13 @@ class StatsNotificationEntity { /** * @ORM\OneToOne(targetEntity="MailPoet\Entities\NewsletterEntity") - * @var NewsletterEntity + * @var NewsletterEntity|null */ private $newsletter; /** * @ORM\OneToOne(targetEntity="MailPoet\Entities\ScheduledTaskEntity") - * @var ScheduledTaskEntity + * @var ScheduledTaskEntity|null */ private $task; @@ -36,7 +36,7 @@ class StatsNotificationEntity { } /** - * @return NewsletterEntity + * @return NewsletterEntity|null */ public function getNewsletter() { $this->safelyLoadToOneAssociation('newsletter'); @@ -44,7 +44,7 @@ class StatsNotificationEntity { } /** - * @return ScheduledTaskEntity + * @return ScheduledTaskEntity|null */ public function getTask() { $this->safelyLoadToOneAssociation('task');