Add newsletter stats data cleanup to newsletter bulk delete

[MAILPOET-2898]
This commit is contained in:
Rostislav Wolny
2020-06-10 09:55:46 +02:00
committed by Veljko V
parent 7bcafcfce9
commit 91d2d92bbd
2 changed files with 93 additions and 1 deletions

View File

@ -17,6 +17,10 @@ use MailPoet\Entities\NewsletterSegmentEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\ScheduledTaskSubscriberEntity;
use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\StatisticsClickEntity;
use MailPoet\Entities\StatisticsNewsletterEntity;
use MailPoet\Entities\StatisticsOpenEntity;
use MailPoet\Entities\StatisticsWooCommercePurchaseEntity;
use MailPoet\Entities\StatsNotificationEntity;
use MailPoetVendor\Carbon\Carbon;
use MailPoetVendor\Doctrine\DBAL\Connection;
@ -218,6 +222,31 @@ class NewslettersRepository extends Repository {
$deletedChildrenCount = $this->bulkDelete(array_column($childrenIds, 'id'));
}
// Delete statistics data
$newsletterStatisticsTable = $this->entityManager->getClassMetadata(StatisticsNewsletterEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("
DELETE s FROM $newsletterStatisticsTable s
WHERE s.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
$statisticsOpensTable = $this->entityManager->getClassMetadata(StatisticsOpenEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("
DELETE s FROM $statisticsOpensTable s
WHERE s.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
$statisticsClicksTable = $this->entityManager->getClassMetadata(StatisticsClickEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("
DELETE s FROM $statisticsClicksTable s
WHERE s.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
$statisticsPurchasesTable = $this->entityManager->getClassMetadata(StatisticsWooCommercePurchaseEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("
DELETE s FROM $statisticsPurchasesTable s
WHERE s.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
// Delete newsletter posts
$postsTable = $this->entityManager->getClassMetadata(NewsletterPostEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("