From 97d157192a3f9eeacd818f8be1dab128a6431ae2 Mon Sep 17 00:00:00 2001 From: Pavel Dohnal Date: Wed, 13 Sep 2017 13:30:23 +0100 Subject: [PATCH] Remove orphaned links [MAILPOET-1102] --- lib/Segments/WP.php | 12 ++++++++++++ tests/unit/Segments/WPTest.php | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/Segments/WP.php b/lib/Segments/WP.php index d73851d951..ef113bf7f8 100644 --- a/lib/Segments/WP.php +++ b/lib/Segments/WP.php @@ -89,6 +89,7 @@ class WP { self::insertUsersToSegment(); self::removeOrphanedSubscribers(); self::removeWPInconsistentubscribers(); + self::removeOrphanedLinks(); return true; } @@ -201,5 +202,16 @@ class WP { ', $subscribers_table, $wp_mailpoet_subscriber_segment_table, $wp_segment->id)); } + + private static function removeOrphanedLinks() { + $subscribers_table = Subscriber::$_table; + $wp_mailpoet_subscriber_segment_table = SubscriberSegment::$_table; + Subscriber::raw_execute(sprintf(' + DELETE wuss FROM + %s as wuss + LEFT JOIN %s as wpms ON wpms.id = wuss.subscriber_id + WHERE wpms.id IS NULL + ', $wp_mailpoet_subscriber_segment_table, $subscribers_table)); + } } diff --git a/tests/unit/Segments/WPTest.php b/tests/unit/Segments/WPTest.php index 9b2c710c20..c0e3aa7045 100644 --- a/tests/unit/Segments/WPTest.php +++ b/tests/unit/Segments/WPTest.php @@ -118,6 +118,18 @@ class WPTest extends \MailPoetTest { expect($subscribers->count())->equals(1); } + function testItRemovesOrphanedLinks() { + $count1 = SubscriberSegment::count(); + $wp_segment = Segment::getWPSegment(); + $association = SubscriberSegment::create(); + $association->subscriber_id = rand() * 4; + $association->segment_id = $wp_segment->id; + $association->save(); + WP::synchronizeUsers(); + $count2 = SubscriberSegment::count(); + expect($count1)->equals($count2); + } + function testItDoesntDeleteNonWPData() { $this->insertUser(); // wp_user_id is null