Replace Segment model with Doctrine in \MailPoet\Segments\WP
[MAILPOET-5752]
This commit is contained in:
committed by
Aschepikov
parent
b63834b02b
commit
374fbe6867
@@ -12,6 +12,7 @@ use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||
use MailPoet\Entities\SubscriberTagEntity;
|
||||
use MailPoet\Entities\TagEntity;
|
||||
use MailPoet\Segments\SegmentsRepository;
|
||||
use MailPoet\Util\License\Features\Subscribers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
@@ -38,14 +39,19 @@ class SubscribersRepository extends Repository {
|
||||
/** @var SubscriberChangesNotifier */
|
||||
private $changesNotifier;
|
||||
|
||||
/** @var SegmentsRepository */
|
||||
private $segmentsRepository;
|
||||
|
||||
public function __construct(
|
||||
EntityManager $entityManager,
|
||||
SubscriberChangesNotifier $changesNotifier,
|
||||
WPFunctions $wp
|
||||
WPFunctions $wp,
|
||||
SegmentsRepository $segmentsRepository
|
||||
) {
|
||||
$this->wp = $wp;
|
||||
parent::__construct($entityManager);
|
||||
$this->changesNotifier = $changesNotifier;
|
||||
$this->segmentsRepository = $segmentsRepository;
|
||||
}
|
||||
|
||||
protected function getEntityClassName() {
|
||||
@@ -553,6 +559,24 @@ class SubscribersRepository extends Repository {
|
||||
return $count;
|
||||
}
|
||||
|
||||
public function removeOrphanedSubscribersFromWpSegment(): void {
|
||||
global $wpdb;
|
||||
|
||||
$segmentId = $this->segmentsRepository->getWpUsersSegment()->getId();
|
||||
|
||||
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();
|
||||
$subscriberSegmentsTable = $this->entityManager->getClassMetadata(SubscriberSegmentEntity::class)->getTableName();
|
||||
|
||||
$this->entityManager->getConnection()->executeStatement(
|
||||
"DELETE s
|
||||
FROM {$subscribersTable} s
|
||||
INNER JOIN {$subscriberSegmentsTable} ss ON s.id = ss.subscriber_id
|
||||
LEFT JOIN {$wpdb->users} u ON s.wp_user_id = u.id
|
||||
WHERE ss.segment_id = :segmentId AND (u.id IS NULL OR s.email = '')",
|
||||
['segmentId' => $segmentId], ['segmentId' => \PDO::PARAM_INT]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int - number of processed ids
|
||||
*/
|
||||
|
Reference in New Issue
Block a user