Add newsletter posts cleanup to newsletter bulk delete
[MAILPOET-2898]
This commit is contained in:
committed by
Veljko V
parent
19be52d162
commit
7bcafcfce9
@@ -12,6 +12,7 @@ use MailPoet\Entities\NewsletterEntity;
|
|||||||
use MailPoet\Entities\NewsletterLinkEntity;
|
use MailPoet\Entities\NewsletterLinkEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionEntity;
|
use MailPoet\Entities\NewsletterOptionEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
||||||
|
use MailPoet\Entities\NewsletterPostEntity;
|
||||||
use MailPoet\Entities\NewsletterSegmentEntity;
|
use MailPoet\Entities\NewsletterSegmentEntity;
|
||||||
use MailPoet\Entities\ScheduledTaskEntity;
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
||||||
@@ -217,10 +218,12 @@ class NewslettersRepository extends Repository {
|
|||||||
$deletedChildrenCount = $this->bulkDelete(array_column($childrenIds, 'id'));
|
$deletedChildrenCount = $this->bulkDelete(array_column($childrenIds, 'id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete scheduled tasks and scheduled task subscribers
|
// Delete newsletter posts
|
||||||
$scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
$postsTable = $this->entityManager->getClassMetadata(NewsletterPostEntity::class)->getTableName();
|
||||||
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
|
$this->entityManager->getConnection()->executeUpdate("
|
||||||
$scheduledTaskSubscribersTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
DELETE np FROM $postsTable np
|
||||||
|
WHERE np.`newsletter_id` IN (:ids)
|
||||||
|
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
|
||||||
|
|
||||||
// Delete newsletter options
|
// Delete newsletter options
|
||||||
$optionsTable = $this->entityManager->getClassMetadata(NewsletterOptionEntity::class)->getTableName();
|
$optionsTable = $this->entityManager->getClassMetadata(NewsletterOptionEntity::class)->getTableName();
|
||||||
@@ -243,6 +246,11 @@ class NewslettersRepository extends Repository {
|
|||||||
WHERE sn.`newsletter_id` IN (:ids)
|
WHERE sn.`newsletter_id` IN (:ids)
|
||||||
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
|
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
|
||||||
|
|
||||||
|
// Delete scheduled tasks and scheduled task subscribers
|
||||||
|
$scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
||||||
|
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
|
||||||
|
$scheduledTaskSubscribersTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
|
||||||
|
|
||||||
// Delete sending tasks subscribers
|
// Delete sending tasks subscribers
|
||||||
$this->entityManager->getConnection()->executeUpdate("
|
$this->entityManager->getConnection()->executeUpdate("
|
||||||
DELETE ts FROM $scheduledTaskSubscribersTable ts
|
DELETE ts FROM $scheduledTaskSubscribersTable ts
|
||||||
|
@@ -7,6 +7,7 @@ use MailPoet\Entities\NewsletterEntity;
|
|||||||
use MailPoet\Entities\NewsletterLinkEntity;
|
use MailPoet\Entities\NewsletterLinkEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionEntity;
|
use MailPoet\Entities\NewsletterOptionEntity;
|
||||||
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
||||||
|
use MailPoet\Entities\NewsletterPostEntity;
|
||||||
use MailPoet\Entities\NewsletterSegmentEntity;
|
use MailPoet\Entities\NewsletterSegmentEntity;
|
||||||
use MailPoet\Entities\ScheduledTaskEntity;
|
use MailPoet\Entities\ScheduledTaskEntity;
|
||||||
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
|
||||||
@@ -138,6 +139,7 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
$childLink = $this->createNewsletterLink($newsletter2Child1, $childrenQueue);
|
$childLink = $this->createNewsletterLink($newsletter2Child1, $childrenQueue);
|
||||||
$optionField = $this->createNewsletterOptionField(NewsletterEntity::TYPE_NOTIFICATION, 'option');
|
$optionField = $this->createNewsletterOptionField(NewsletterEntity::TYPE_NOTIFICATION, 'option');
|
||||||
$optionValue = $this->createNewsletterOption($newsletter2Child1, $optionField, 'value');
|
$optionValue = $this->createNewsletterOption($newsletter2Child1, $optionField, 'value');
|
||||||
|
$newsletterPost = $this->createNewsletterPost($newsletter2, 1);
|
||||||
|
|
||||||
// Trash
|
// Trash
|
||||||
$this->repository->bulkTrash([$newsletter1->getId(), $newsletter2->getId()]);
|
$this->repository->bulkTrash([$newsletter1->getId(), $newsletter2->getId()]);
|
||||||
@@ -159,6 +161,7 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
$this->entityManager->detach($newsletter1Link);
|
$this->entityManager->detach($newsletter1Link);
|
||||||
$this->entityManager->detach($childLink);
|
$this->entityManager->detach($childLink);
|
||||||
$this->entityManager->detach($optionValue);
|
$this->entityManager->detach($optionValue);
|
||||||
|
$this->entityManager->detach($newsletterPost);
|
||||||
|
|
||||||
// Check they were all deleted
|
// Check they were all deleted
|
||||||
// Newsletters
|
// Newsletters
|
||||||
@@ -192,6 +195,9 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// Option fields values
|
// Option fields values
|
||||||
expect($this->entityManager->find(NewsletterOptionEntity::class, $optionValue->getId()))->null();
|
expect($this->entityManager->find(NewsletterOptionEntity::class, $optionValue->getId()))->null();
|
||||||
|
|
||||||
|
// Newsletter post
|
||||||
|
expect($this->entityManager->find(NewsletterPostEntity::class, $newsletterPost->getId()))->null();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
@@ -274,6 +280,13 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
return $option;
|
return $option;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function createNewsletterPost(NewsletterEntity $newsletter, int $postId): NewsletterPostEntity {
|
||||||
|
$post = new NewsletterPostEntity($newsletter, $postId);
|
||||||
|
$this->entityManager->persist($post);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
return $post;
|
||||||
|
}
|
||||||
|
|
||||||
private function cleanup() {
|
private function cleanup() {
|
||||||
$this->truncateEntity(NewsletterEntity::class);
|
$this->truncateEntity(NewsletterEntity::class);
|
||||||
$this->truncateEntity(ScheduledTaskEntity::class);
|
$this->truncateEntity(ScheduledTaskEntity::class);
|
||||||
@@ -286,5 +299,6 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
$this->truncateEntity(NewsletterLinkEntity::class);
|
$this->truncateEntity(NewsletterLinkEntity::class);
|
||||||
$this->truncateEntity(NewsletterOptionFieldEntity::class);
|
$this->truncateEntity(NewsletterOptionFieldEntity::class);
|
||||||
$this->truncateEntity(NewsletterOptionEntity::class);
|
$this->truncateEntity(NewsletterOptionEntity::class);
|
||||||
|
$this->truncateEntity(NewsletterPostEntity::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user