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');