Use Doctrine in the posts task
[MAILPOET-3027]
This commit is contained in:
@@ -151,7 +151,9 @@ class Newsletter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// extract and save newsletter posts
|
// extract and save newsletter posts
|
||||||
$this->postsTask->extractAndSave($renderedNewsletter, $newsletter);
|
$newsletterEntity = $this->newslettersRepository->findOneById($newsletter->id);
|
||||||
|
if (!$newsletterEntity) return false;
|
||||||
|
$this->postsTask->extractAndSave($renderedNewsletter, $newsletterEntity);
|
||||||
// update queue with the rendered and pre-processed newsletter
|
// update queue with the rendered and pre-processed newsletter
|
||||||
$sendingTask->newsletterRenderedSubject = ShortcodesTask::process(
|
$sendingTask->newsletterRenderedSubject = ShortcodesTask::process(
|
||||||
$newsletter->subject,
|
$newsletter->subject,
|
||||||
|
@@ -2,25 +2,31 @@
|
|||||||
|
|
||||||
namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
||||||
|
|
||||||
|
use MailPoet\DI\ContainerWrapper;
|
||||||
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
|
use MailPoet\Entities\NewsletterPostEntity;
|
||||||
use MailPoet\Logging\LoggerFactory;
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Models\Newsletter as NewsletterModel;
|
use MailPoet\Newsletter\NewsletterPostsRepository;
|
||||||
use MailPoet\Models\NewsletterPost;
|
|
||||||
|
|
||||||
class Posts {
|
class Posts {
|
||||||
/** @var LoggerFactory */
|
/** @var LoggerFactory */
|
||||||
private $loggerFactory;
|
private $loggerFactory;
|
||||||
|
|
||||||
|
/** @var NewsletterPostsRepository */
|
||||||
|
private $newsletterPostRepository;
|
||||||
|
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
$this->loggerFactory = LoggerFactory::getInstance();
|
$this->loggerFactory = LoggerFactory::getInstance();
|
||||||
|
$this->newsletterPostRepository = ContainerWrapper::getInstance()->get(NewsletterPostsRepository::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function extractAndSave($renderedNewsletter, $newsletter) {
|
public function extractAndSave($renderedNewsletter, NewsletterEntity $newsletter): bool {
|
||||||
if ($newsletter->type !== NewsletterModel::TYPE_NOTIFICATION_HISTORY) {
|
if ($newsletter->getType() !== NewsletterEntity::TYPE_NOTIFICATION_HISTORY) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->addInfo(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->addInfo(
|
||||||
'extract and save posts - before',
|
'extract and save posts - before',
|
||||||
['newsletter_id' => $newsletter->id]
|
['newsletter_id' => $newsletter->getId()]
|
||||||
);
|
);
|
||||||
preg_match_all(
|
preg_match_all(
|
||||||
'/data-post-id="(\d+)"/ism',
|
'/data-post-id="(\d+)"/ism',
|
||||||
@@ -30,16 +36,21 @@ class Posts {
|
|||||||
if (!count($matchedPostsIds)) {
|
if (!count($matchedPostsIds)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$newsletterId = $newsletter->parentId; // parent post notification
|
$parent = $newsletter->getParent(); // parent post notification
|
||||||
|
if (!$parent instanceof NewsletterEntity) {
|
||||||
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->addInfo(
|
||||||
|
'parent post has not been found',
|
||||||
|
['newsletter_id' => $newsletter->getId()]
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
foreach ($matchedPostsIds as $postId) {
|
foreach ($matchedPostsIds as $postId) {
|
||||||
$newsletterPost = NewsletterPost::create();
|
$newsletterPost = new NewsletterPostEntity($parent, $postId);
|
||||||
$newsletterPost->newsletterId = $newsletterId;
|
$this->newsletterPostRepository->persist($newsletterPost);
|
||||||
$newsletterPost->postId = $postId;
|
|
||||||
$newsletterPost->save();
|
|
||||||
}
|
}
|
||||||
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->addInfo(
|
$this->loggerFactory->getLogger(LoggerFactory::TOPIC_POST_NOTIFICATIONS)->addInfo(
|
||||||
'extract and save posts - after',
|
'extract and save posts - after',
|
||||||
['newsletter_id' => $newsletter->id, 'matched_posts_ids' => $matchedPostsIds]
|
['newsletter_id' => $newsletter->getId(), 'matched_posts_ids' => $matchedPostsIds]
|
||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user