Refactor WP Users segment controller to injectable service
[MAILPOET-3141]
This commit is contained in:
committed by
Veljko V
parent
75e7012fb6
commit
645f888186
@@ -34,18 +34,23 @@ class Segments extends APIEndpoint {
|
|||||||
/** @var WooCommerce */
|
/** @var WooCommerce */
|
||||||
private $wooCommerceSync;
|
private $wooCommerceSync;
|
||||||
|
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Listing\BulkActionController $bulkAction,
|
Listing\BulkActionController $bulkAction,
|
||||||
Listing\Handler $listingHandler,
|
Listing\Handler $listingHandler,
|
||||||
SegmentsRepository $segmentsRepository,
|
SegmentsRepository $segmentsRepository,
|
||||||
SegmentsResponseBuilder $segmentsResponseBuilder,
|
SegmentsResponseBuilder $segmentsResponseBuilder,
|
||||||
WooCommerce $wooCommerce
|
WooCommerce $wooCommerce,
|
||||||
|
WP $wpSegment
|
||||||
) {
|
) {
|
||||||
$this->bulkAction = $bulkAction;
|
$this->bulkAction = $bulkAction;
|
||||||
$this->listingHandler = $listingHandler;
|
$this->listingHandler = $listingHandler;
|
||||||
$this->wooCommerceSync = $wooCommerce;
|
$this->wooCommerceSync = $wooCommerce;
|
||||||
$this->segmentsRepository = $segmentsRepository;
|
$this->segmentsRepository = $segmentsRepository;
|
||||||
$this->segmentsResponseBuilder = $segmentsResponseBuilder;
|
$this->segmentsResponseBuilder = $segmentsResponseBuilder;
|
||||||
|
$this->wpSegment = $wpSegment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get($data = []) {
|
public function get($data = []) {
|
||||||
@@ -179,7 +184,7 @@ class Segments extends APIEndpoint {
|
|||||||
if ($data['type'] === Segment::TYPE_WC_USERS) {
|
if ($data['type'] === Segment::TYPE_WC_USERS) {
|
||||||
$this->wooCommerceSync->synchronizeCustomers();
|
$this->wooCommerceSync->synchronizeCustomers();
|
||||||
} else {
|
} else {
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return $this->errorResponse([
|
return $this->errorResponse([
|
||||||
|
@@ -6,6 +6,7 @@ use MailPoet\Form\DisplayFormInWPContent;
|
|||||||
use MailPoet\Mailer\WordPress\WordpressMailerReplacer;
|
use MailPoet\Mailer\WordPress\WordpressMailerReplacer;
|
||||||
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
|
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
|
||||||
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
|
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
|
||||||
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Statistics\Track\WooCommercePurchases;
|
use MailPoet\Statistics\Track\WooCommercePurchases;
|
||||||
use MailPoet\Subscription\Comment;
|
use MailPoet\Subscription\Comment;
|
||||||
@@ -57,6 +58,9 @@ class Hooks {
|
|||||||
/** @var DisplayFormInWPContent */
|
/** @var DisplayFormInWPContent */
|
||||||
private $displayFormInWPContent;
|
private $displayFormInWPContent;
|
||||||
|
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Form $subscriptionForm,
|
Form $subscriptionForm,
|
||||||
Comment $subscriptionComment,
|
Comment $subscriptionComment,
|
||||||
@@ -70,7 +74,8 @@ class Hooks {
|
|||||||
WooCommercePurchases $woocommercePurchases,
|
WooCommercePurchases $woocommercePurchases,
|
||||||
PostNotificationScheduler $postNotificationScheduler,
|
PostNotificationScheduler $postNotificationScheduler,
|
||||||
WordpressMailerReplacer $wordpressMailerReplacer,
|
WordpressMailerReplacer $wordpressMailerReplacer,
|
||||||
DisplayFormInWPContent $displayFormInWPContent
|
DisplayFormInWPContent $displayFormInWPContent,
|
||||||
|
WP $wpSegment
|
||||||
) {
|
) {
|
||||||
$this->subscriptionForm = $subscriptionForm;
|
$this->subscriptionForm = $subscriptionForm;
|
||||||
$this->subscriptionComment = $subscriptionComment;
|
$this->subscriptionComment = $subscriptionComment;
|
||||||
@@ -85,6 +90,7 @@ class Hooks {
|
|||||||
$this->postNotificationScheduler = $postNotificationScheduler;
|
$this->postNotificationScheduler = $postNotificationScheduler;
|
||||||
$this->wordpressMailerReplacer = $wordpressMailerReplacer;
|
$this->wordpressMailerReplacer = $wordpressMailerReplacer;
|
||||||
$this->displayFormInWPContent = $displayFormInWPContent;
|
$this->displayFormInWPContent = $displayFormInWPContent;
|
||||||
|
$this->wpSegment = $wpSegment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function init() {
|
public function init() {
|
||||||
@@ -237,33 +243,33 @@ class Hooks {
|
|||||||
// WP Users synchronization
|
// WP Users synchronization
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'user_register',
|
'user_register',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
6
|
6
|
||||||
);
|
);
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'added_existing_user',
|
'added_existing_user',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
6
|
6
|
||||||
);
|
);
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'profile_update',
|
'profile_update',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
6, 2
|
6, 2
|
||||||
);
|
);
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'delete_user',
|
'delete_user',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
// multisite
|
// multisite
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'deleted_user',
|
'deleted_user',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
$this->wp->addAction(
|
$this->wp->addAction(
|
||||||
'remove_user_from_blog',
|
'remove_user_from_blog',
|
||||||
'\MailPoet\Segments\WP::synchronizeUser',
|
[$this->wpSegment, 'synchronizeUser'],
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -49,17 +49,21 @@ class Populator {
|
|||||||
const TEMPLATES_NAMESPACE = '\MailPoet\Config\PopulatorData\Templates\\';
|
const TEMPLATES_NAMESPACE = '\MailPoet\Config\PopulatorData\Templates\\';
|
||||||
/** @var FormsRepository */
|
/** @var FormsRepository */
|
||||||
private $formsRepository;
|
private $formsRepository;
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
SettingsController $settings,
|
SettingsController $settings,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
Captcha $captcha,
|
Captcha $captcha,
|
||||||
ReferralDetector $referralDetector,
|
ReferralDetector $referralDetector,
|
||||||
FormsRepository $formsRepository
|
FormsRepository $formsRepository,
|
||||||
|
WP $wpSegment
|
||||||
) {
|
) {
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->captcha = $captcha;
|
$this->captcha = $captcha;
|
||||||
|
$this->wpSegment = $wpSegment;
|
||||||
$this->referralDetector = $referralDetector;
|
$this->referralDetector = $referralDetector;
|
||||||
$this->prefix = Env::$dbPrefix;
|
$this->prefix = Env::$dbPrefix;
|
||||||
$this->models = [
|
$this->models = [
|
||||||
@@ -337,7 +341,7 @@ class Populator {
|
|||||||
Segment::getWooCommerceSegment();
|
Segment::getWooCommerceSegment();
|
||||||
|
|
||||||
// Synchronize WP Users
|
// Synchronize WP Users
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
|
|
||||||
// Default segment
|
// Default segment
|
||||||
$defaultSegment = Segment::where('type', 'default')->orderByAsc('id')->limit(1)->findOne();
|
$defaultSegment = Segment::where('type', 'default')->orderByAsc('id')->limit(1)->findOne();
|
||||||
|
@@ -90,7 +90,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
// Config
|
// Config
|
||||||
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
$container->autowire(\MailPoet\Config\AccessControl::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);
|
$container->autowire(\MailPoet\Config\Activator::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Config\Populator::class);
|
$container->autowire(\MailPoet\Config\Populator::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Config\Changelog::class)->setPublic(true);
|
$container->autowire(\MailPoet\Config\Changelog::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Config\DatabaseInitializer::class);
|
$container->autowire(\MailPoet\Config\DatabaseInitializer::class);
|
||||||
$container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
|
$container->autowire(\MailPoet\Config\Hooks::class)->setPublic(true);
|
||||||
@@ -249,6 +249,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Subscribers\Statistics\SubscriberStatisticsRepository::class);
|
$container->autowire(\MailPoet\Subscribers\Statistics\SubscriberStatisticsRepository::class);
|
||||||
// Segments
|
// Segments
|
||||||
$container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true);
|
$container->autowire(\MailPoet\Segments\WooCommerce::class)->setPublic(true);
|
||||||
|
$container->autowire(\MailPoet\Segments\WP::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Segments\SubscribersFinder::class)->setPublic(true);
|
$container->autowire(\MailPoet\Segments\SubscribersFinder::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Segments\SegmentsRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Segments\SegmentsRepository::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Segments\SegmentSubscribersRepository::class)->setPublic(true);
|
$container->autowire(\MailPoet\Segments\SegmentSubscribersRepository::class)->setPublic(true);
|
||||||
|
@@ -16,7 +16,7 @@ use MailPoet\Subscribers\Source;
|
|||||||
use MailPoetVendor\Idiorm\ORM;
|
use MailPoetVendor\Idiorm\ORM;
|
||||||
|
|
||||||
class WP {
|
class WP {
|
||||||
public static function synchronizeUser($wpUserId, $oldWpUserData = false) {
|
public function synchronizeUser($wpUserId, $oldWpUserData = false) {
|
||||||
$wpUser = \get_userdata($wpUserId);
|
$wpUser = \get_userdata($wpUserId);
|
||||||
if ($wpUser === false) return;
|
if ($wpUser === false) return;
|
||||||
|
|
||||||
@@ -25,13 +25,13 @@ class WP {
|
|||||||
|
|
||||||
$currentFilter = current_filter();
|
$currentFilter = current_filter();
|
||||||
if (in_array($currentFilter, ['delete_user', 'deleted_user', 'remove_user_from_blog'])) {
|
if (in_array($currentFilter, ['delete_user', 'deleted_user', 'remove_user_from_blog'])) {
|
||||||
self::deleteSubscriber($subscriber);
|
$this->deleteSubscriber($subscriber);
|
||||||
} else {
|
} else {
|
||||||
self::updateSubscriber($currentFilter, $wpUser, $subscriber, $oldWpUserData);
|
$this->updateSubscriber($currentFilter, $wpUser, $subscriber, $oldWpUserData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function deleteSubscriber($subscriber) {
|
private function deleteSubscriber($subscriber) {
|
||||||
if ($subscriber !== false) {
|
if ($subscriber !== false) {
|
||||||
// unlink subscriber from wp user and delete
|
// unlink subscriber from wp user and delete
|
||||||
$subscriber->set('wp_user_id', null);
|
$subscriber->set('wp_user_id', null);
|
||||||
@@ -39,7 +39,7 @@ class WP {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function updateSubscriber($currentFilter, $wpUser, $subscriber = false, $oldWpUserData = false) {
|
private function updateSubscriber($currentFilter, $wpUser, $subscriber = false, $oldWpUserData = false) {
|
||||||
$wpSegment = Segment::getWPSegment();
|
$wpSegment = Segment::getWPSegment();
|
||||||
if (!$wpSegment) return;
|
if (!$wpSegment) return;
|
||||||
|
|
||||||
@@ -60,13 +60,14 @@ class WP {
|
|||||||
$firstName = $wpUser->display_name; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
$firstName = $wpUser->display_name; // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||||
}
|
}
|
||||||
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
|
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
|
||||||
|
$status = $signupConfirmationEnabled ? Subscriber::STATUS_UNCONFIRMED : Subscriber::STATUS_SUBSCRIBED;
|
||||||
// subscriber data
|
// subscriber data
|
||||||
$data = [
|
$data = [
|
||||||
'wp_user_id' => $wpUser->ID,
|
'wp_user_id' => $wpUser->ID,
|
||||||
'email' => $wpUser->user_email, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
'email' => $wpUser->user_email, // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps
|
||||||
'first_name' => $firstName,
|
'first_name' => $firstName,
|
||||||
'last_name' => $lastName,
|
'last_name' => $lastName,
|
||||||
'status' => $signupConfirmationEnabled ? Subscriber::STATUS_UNCONFIRMED : Subscriber::STATUS_SUBSCRIBED,
|
'status' => $status,
|
||||||
'source' => Source::WORDPRESS_USER,
|
'source' => Source::WORDPRESS_USER,
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -104,22 +105,21 @@ class WP {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function synchronizeUsers() {
|
public function synchronizeUsers() {
|
||||||
|
$updatedUsersEmails = $this->updateSubscribersEmails();
|
||||||
$updatedUsersEmails = self::updateSubscribersEmails();
|
$insertedUsersEmails = $this->insertSubscribers();
|
||||||
$insertedUsersEmails = self::insertSubscribers();
|
$this->removeUpdatedSubscribersWithInvalidEmail(array_merge($updatedUsersEmails, $insertedUsersEmails));
|
||||||
self::removeUpdatedSubscribersWithInvalidEmail(array_merge($updatedUsersEmails, $insertedUsersEmails));
|
$this->updateFirstNames();
|
||||||
self::updateFirstNames();
|
$this->updateLastNames();
|
||||||
self::updateLastNames();
|
$this->updateFirstNameIfMissing();
|
||||||
self::updateFirstNameIfMissing();
|
$this->insertUsersToSegment();
|
||||||
self::insertUsersToSegment();
|
$this->removeOrphanedSubscribers();
|
||||||
self::removeOrphanedSubscribers();
|
$this->markSpammyWordpressUsersAsUnconfirmed();
|
||||||
self::markSpammyWordpressUsersAsUnconfirmed();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function removeUpdatedSubscribersWithInvalidEmail($updatedEmails) {
|
private function removeUpdatedSubscribersWithInvalidEmail($updatedEmails) {
|
||||||
$validator = new ModelValidator();
|
$validator = new ModelValidator();
|
||||||
$invalidWpUserIds = array_map(function($item) {
|
$invalidWpUserIds = array_map(function($item) {
|
||||||
return $item['id'];
|
return $item['id'];
|
||||||
@@ -133,7 +133,7 @@ class WP {
|
|||||||
ORM::for_table(Subscriber::$_table)->whereIn('wp_user_id', $invalidWpUserIds)->delete_many();
|
ORM::for_table(Subscriber::$_table)->whereIn('wp_user_id', $invalidWpUserIds)->delete_many();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function updateSubscribersEmails() {
|
private function updateSubscribersEmails() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
Subscriber::rawExecute('SELECT NOW();');
|
Subscriber::rawExecute('SELECT NOW();');
|
||||||
$startTime = Subscriber::getLastStatement()->fetch(\PDO::FETCH_COLUMN);
|
$startTime = Subscriber::getLastStatement()->fetch(\PDO::FETCH_COLUMN);
|
||||||
@@ -151,7 +151,7 @@ class WP {
|
|||||||
', $subscribersTable, $startTime))->findArray();
|
', $subscribersTable, $startTime))->findArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function insertSubscribers() {
|
private function insertSubscribers() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$subscribersTable = Subscriber::$_table;
|
$subscribersTable = Subscriber::$_table;
|
||||||
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
|
$signupConfirmationEnabled = SettingsController::getInstance()->get('signup_confirmation.enabled');
|
||||||
@@ -179,7 +179,7 @@ class WP {
|
|||||||
return $inserterdUserIds;
|
return $inserterdUserIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function updateFirstNames() {
|
private function updateFirstNames() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$subscribersTable = Subscriber::$_table;
|
$subscribersTable = Subscriber::$_table;
|
||||||
Subscriber::rawExecute(sprintf('
|
Subscriber::rawExecute(sprintf('
|
||||||
@@ -192,7 +192,7 @@ class WP {
|
|||||||
', $subscribersTable, $wpdb->usermeta));
|
', $subscribersTable, $wpdb->usermeta));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function updateLastNames() {
|
private function updateLastNames() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$subscribersTable = Subscriber::$_table;
|
$subscribersTable = Subscriber::$_table;
|
||||||
Subscriber::rawExecute(sprintf('
|
Subscriber::rawExecute(sprintf('
|
||||||
@@ -205,7 +205,7 @@ class WP {
|
|||||||
', $subscribersTable, $wpdb->usermeta));
|
', $subscribersTable, $wpdb->usermeta));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function updateFirstNameIfMissing() {
|
private function updateFirstNameIfMissing() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$subscribersTable = Subscriber::$_table;
|
$subscribersTable = Subscriber::$_table;
|
||||||
Subscriber::rawExecute(sprintf('
|
Subscriber::rawExecute(sprintf('
|
||||||
@@ -217,7 +217,7 @@ class WP {
|
|||||||
', $subscribersTable, $wpdb->users));
|
', $subscribersTable, $wpdb->users));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function insertUsersToSegment() {
|
private function insertUsersToSegment() {
|
||||||
$wpSegment = Segment::getWPSegment();
|
$wpSegment = Segment::getWPSegment();
|
||||||
$subscribersTable = Subscriber::$_table;
|
$subscribersTable = Subscriber::$_table;
|
||||||
$wpMailpoetSubscriberSegmentTable = SubscriberSegment::$_table;
|
$wpMailpoetSubscriberSegmentTable = SubscriberSegment::$_table;
|
||||||
@@ -228,7 +228,7 @@ class WP {
|
|||||||
', $wpMailpoetSubscriberSegmentTable, $wpSegment->id, $subscribersTable));
|
', $wpMailpoetSubscriberSegmentTable, $wpSegment->id, $subscribersTable));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function removeOrphanedSubscribers() {
|
private function removeOrphanedSubscribers() {
|
||||||
// remove orphaned wp segment subscribers (not having a matching wp user id),
|
// remove orphaned wp segment subscribers (not having a matching wp user id),
|
||||||
// e.g. if wp users were deleted directly from the database
|
// e.g. if wp users were deleted directly from the database
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
@@ -243,7 +243,7 @@ class WP {
|
|||||||
->delete();
|
->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function markSpammyWordpressUsersAsUnconfirmed() {
|
private function markSpammyWordpressUsersAsUnconfirmed() {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
$query = '
|
$query = '
|
||||||
UPDATE %s as subscribers
|
UPDATE %s as subscribers
|
||||||
|
@@ -19,12 +19,20 @@ class WooCommerce {
|
|||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
private $mailpoetEmailCollation;
|
private $mailpoetEmailCollation;
|
||||||
private $wpPostmetaValueCollation;
|
private $wpPostmetaValueCollation;
|
||||||
|
|
||||||
public function __construct(SettingsController $settings, WPFunctions $wp) {
|
public function __construct(
|
||||||
|
SettingsController $settings,
|
||||||
|
WPFunctions $wp,
|
||||||
|
WP $wpSegment
|
||||||
|
) {
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
|
$this->wpSegment = $wpSegment;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function synchronizeRegisteredCustomer($wpUserId, $currentFilter = null) {
|
public function synchronizeRegisteredCustomer($wpUserId, $currentFilter = null) {
|
||||||
@@ -105,7 +113,7 @@ class WooCommerce {
|
|||||||
public function synchronizeCustomers() {
|
public function synchronizeCustomers() {
|
||||||
$this->getColumnCollation();
|
$this->getColumnCollation();
|
||||||
|
|
||||||
WP::synchronizeUsers(); // synchronize registered users
|
$this->wpSegment->synchronizeUsers(); // synchronize registered users
|
||||||
|
|
||||||
$this->markRegisteredCustomers();
|
$this->markRegisteredCustomers();
|
||||||
$insertedUsersEmails = $this->insertSubscribersFromOrders();
|
$insertedUsersEmails = $this->insertSubscribersFromOrders();
|
||||||
|
@@ -10,6 +10,7 @@ use MailPoet\Config\Activator;
|
|||||||
use MailPoet\Config\Populator;
|
use MailPoet\Config\Populator;
|
||||||
use MailPoet\Form\FormsRepository;
|
use MailPoet\Form\FormsRepository;
|
||||||
use MailPoet\Referrals\ReferralDetector;
|
use MailPoet\Referrals\ReferralDetector;
|
||||||
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
use MailPoet\Subscription\Captcha;
|
use MailPoet\Subscription\Captcha;
|
||||||
@@ -23,20 +24,21 @@ class SetupTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItCanReinstall() {
|
public function testItCanReinstall() {
|
||||||
$wp = Stub::make(new WPFunctions, [
|
$wpStub = Stub::make(new WPFunctions, [
|
||||||
'doAction' => asCallable([WPHooksHelper::class, 'doAction']),
|
'doAction' => asCallable([WPHooksHelper::class, 'doAction']),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$settings = SettingsController::getInstance();
|
$settings = SettingsController::getInstance();
|
||||||
$referralDetector = new ReferralDetector($wp, $settings);
|
$referralDetector = new ReferralDetector($wpStub, $settings);
|
||||||
$populator = new Populator(
|
$populator = new Populator(
|
||||||
$settings,
|
$settings,
|
||||||
$wp,
|
$wpStub,
|
||||||
new Captcha(),
|
new Captcha(),
|
||||||
$referralDetector,
|
$referralDetector,
|
||||||
$this->diContainer->get(FormsRepository::class)
|
$this->diContainer->get(FormsRepository::class),
|
||||||
|
$this->diContainer->get(WP::class)
|
||||||
);
|
);
|
||||||
$router = new Setup($wp, new Activator($settings, $populator));
|
$router = new Setup($wpStub, new Activator($settings, $populator));
|
||||||
$response = $router->reset();
|
$response = $router->reset();
|
||||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
|
||||||
|
@@ -14,7 +14,6 @@ use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
|||||||
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
use MailPoet\Cron\Workers\StatsNotifications\Scheduler as StatsNotificationsScheduler;
|
||||||
use MailPoet\DI\ContainerWrapper;
|
use MailPoet\DI\ContainerWrapper;
|
||||||
use MailPoet\Entities\NewsletterEntity;
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Form\FormsRepository;
|
|
||||||
use MailPoet\Logging\LoggerFactory;
|
use MailPoet\Logging\LoggerFactory;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
@@ -30,14 +29,12 @@ use MailPoet\Models\Subscriber;
|
|||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
use MailPoet\Newsletter\Links\Links;
|
use MailPoet\Newsletter\Links\Links;
|
||||||
use MailPoet\Newsletter\NewslettersRepository;
|
use MailPoet\Newsletter\NewslettersRepository;
|
||||||
use MailPoet\Referrals\ReferralDetector;
|
|
||||||
use MailPoet\Router\Endpoints\Track;
|
use MailPoet\Router\Endpoints\Track;
|
||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
use MailPoet\Segments\SubscribersFinder;
|
use MailPoet\Segments\SubscribersFinder;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscription\Captcha;
|
|
||||||
use MailPoet\Subscription\SubscriptionUrlFactory;
|
use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
@@ -72,15 +69,8 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
parent::_before();
|
parent::_before();
|
||||||
$wpUsers = get_users();
|
$wpUsers = get_users();
|
||||||
wp_set_current_user($wpUsers[0]->ID);
|
wp_set_current_user($wpUsers[0]->ID);
|
||||||
$this->settings = SettingsController::getInstance();
|
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||||
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings);
|
$populator = $this->diContainer->get(Populator::class);
|
||||||
$populator = new Populator(
|
|
||||||
$this->settings,
|
|
||||||
WPFunctions::get(),
|
|
||||||
new Captcha,
|
|
||||||
$referralDetector,
|
|
||||||
$this->diContainer->get(FormsRepository::class)
|
|
||||||
);
|
|
||||||
$populator->up();
|
$populator->up();
|
||||||
$this->subscriber = Subscriber::create();
|
$this->subscriber = Subscriber::create();
|
||||||
$this->subscriber->email = 'john@doe.com';
|
$this->subscriber->email = 'john@doe.com';
|
||||||
|
@@ -6,14 +6,10 @@ use Codeception\Stub;
|
|||||||
use Codeception\Stub\Expected;
|
use Codeception\Stub\Expected;
|
||||||
use MailPoet\Config\Populator;
|
use MailPoet\Config\Populator;
|
||||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
||||||
use MailPoet\Form\FormsRepository;
|
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Referrals\ReferralDetector;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
use MailPoet\Subscription\Captcha;
|
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
|
||||||
use MailPoetVendor\Idiorm\ORM;
|
use MailPoetVendor\Idiorm\ORM;
|
||||||
|
|
||||||
class MailerTest extends \MailPoetTest {
|
class MailerTest extends \MailPoetTest {
|
||||||
@@ -27,15 +23,8 @@ class MailerTest extends \MailPoetTest {
|
|||||||
parent::_before();
|
parent::_before();
|
||||||
$wpUsers = get_users();
|
$wpUsers = get_users();
|
||||||
wp_set_current_user($wpUsers[0]->ID);
|
wp_set_current_user($wpUsers[0]->ID);
|
||||||
$this->settings = SettingsController::getInstance();
|
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||||
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings);
|
$populator = $this->diContainer->get(Populator::class);
|
||||||
$populator = new Populator(
|
|
||||||
$this->settings,
|
|
||||||
WPFunctions::get(),
|
|
||||||
new Captcha,
|
|
||||||
$referralDetector,
|
|
||||||
$this->diContainer->get(FormsRepository::class)
|
|
||||||
);
|
|
||||||
$populator->up();
|
$populator->up();
|
||||||
$this->mailerTask = new MailerTask();
|
$this->mailerTask = new MailerTask();
|
||||||
$this->sender = $this->settings->get('sender');
|
$this->sender = $this->settings->get('sender');
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
namespace MailPoet\Test\Newsletter;
|
namespace MailPoet\Test\Newsletter;
|
||||||
|
|
||||||
use MailPoet\Config\Populator;
|
use MailPoet\Config\Populator;
|
||||||
use MailPoet\Form\FormsRepository;
|
|
||||||
use MailPoet\Models\CustomField;
|
use MailPoet\Models\CustomField;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
@@ -12,10 +11,8 @@ use MailPoet\Models\SubscriberCustomField;
|
|||||||
use MailPoet\Newsletter\Shortcodes\Categories\Date;
|
use MailPoet\Newsletter\Shortcodes\Categories\Date;
|
||||||
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
||||||
use MailPoet\Newsletter\Url as NewsletterUrl;
|
use MailPoet\Newsletter\Url as NewsletterUrl;
|
||||||
use MailPoet\Referrals\ReferralDetector;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscription\Captcha;
|
|
||||||
use MailPoet\Subscription\SubscriptionUrlFactory;
|
use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
use MailPoetVendor\Idiorm\ORM;
|
use MailPoetVendor\Idiorm\ORM;
|
||||||
@@ -39,14 +36,7 @@ class ShortcodesTest extends \MailPoetTest {
|
|||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->settings = SettingsController::getInstance();
|
$this->settings = SettingsController::getInstance();
|
||||||
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings);
|
$populator = $this->diContainer->get(Populator::class);
|
||||||
$populator = new Populator(
|
|
||||||
$this->settings,
|
|
||||||
WPFunctions::get(),
|
|
||||||
new Captcha,
|
|
||||||
$referralDetector,
|
|
||||||
$this->diContainer->get(FormsRepository::class)
|
|
||||||
);
|
|
||||||
$populator->up();
|
$populator->up();
|
||||||
$this->wPUser = $this->_createWPUser();
|
$this->wPUser = $this->_createWPUser();
|
||||||
$this->wPPost = $this->_createWPPost();
|
$this->wPPost = $this->_createWPPost();
|
||||||
|
@@ -4,7 +4,6 @@ namespace MailPoet\Test\Segments;
|
|||||||
|
|
||||||
require_once(ABSPATH . 'wp-admin/includes/user.php');
|
require_once(ABSPATH . 'wp-admin/includes/user.php');
|
||||||
|
|
||||||
use MailPoet\DI\ContainerWrapper;
|
|
||||||
use MailPoet\Models\Segment;
|
use MailPoet\Models\Segment;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Models\SubscriberSegment;
|
use MailPoet\Models\SubscriberSegment;
|
||||||
@@ -19,6 +18,16 @@ class WPTest extends \MailPoetTest {
|
|||||||
/** @var SettingsController */
|
/** @var SettingsController */
|
||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
|
public function _before() {
|
||||||
|
parent::_before();
|
||||||
|
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||||
|
$this->wpSegment = $this->diContainer->get(WP::class);
|
||||||
|
$this->cleanData();
|
||||||
|
}
|
||||||
|
|
||||||
public function testSynchronizeUserKeepsStatusOfOldUser() {
|
public function testSynchronizeUserKeepsStatusOfOldUser() {
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
@@ -27,7 +36,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
'status' => Subscriber::STATUS_SUBSCRIBED,
|
'status' => Subscriber::STATUS_SUBSCRIBED,
|
||||||
'wp_user_id' => $id,
|
'wp_user_id' => $id,
|
||||||
]);
|
]);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
||||||
expect($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||||
}
|
}
|
||||||
@@ -40,7 +49,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
'wp_user_id' => null,
|
'wp_user_id' => null,
|
||||||
]);
|
]);
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($dbSubscriber->status)->equals($subscriber->status);
|
expect($dbSubscriber->status)->equals($subscriber->status);
|
||||||
}
|
}
|
||||||
@@ -49,7 +58,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('signup_confirmation', ['enabled' => '0']);
|
$this->settings->set('signup_confirmation', ['enabled' => '0']);
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||||
}
|
}
|
||||||
@@ -58,7 +67,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('signup_confirmation', ['enabled' => '1']);
|
$this->settings->set('signup_confirmation', ['enabled' => '1']);
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
}
|
}
|
||||||
@@ -67,7 +76,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('signup_confirmation', ['enabled' => '0']);
|
$this->settings->set('signup_confirmation', ['enabled' => '0']);
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
|
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
|
||||||
expect(count($subscribers))->equals(2);
|
expect(count($subscribers))->equals(2);
|
||||||
expect($subscribers[0]->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($subscribers[0]->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||||
@@ -78,7 +87,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('signup_confirmation', ['enabled' => '1']);
|
$this->settings->set('signup_confirmation', ['enabled' => '1']);
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
|
$subscribers = Subscriber::whereLike("email", "user-sync-test%")->findMany();
|
||||||
expect(count($subscribers))->equals(2);
|
expect(count($subscribers))->equals(2);
|
||||||
expect($subscribers[0]->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($subscribers[0]->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
@@ -96,7 +105,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('subscribe.on_register.enabled', '1');
|
$this->settings->set('subscribe.on_register.enabled', '1');
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber->countConfirmations)->equals(1);
|
expect($wpSubscriber->countConfirmations)->equals(1);
|
||||||
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
@@ -106,7 +115,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('subscribe.on_register.enabled', '1');
|
$this->settings->set('subscribe.on_register.enabled', '1');
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber->countConfirmations)->equals(0);
|
expect($wpSubscriber->countConfirmations)->equals(0);
|
||||||
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
expect($wpSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED);
|
||||||
@@ -116,7 +125,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->settings->set('subscribe.on_register.enabled', '0');
|
$this->settings->set('subscribe.on_register.enabled', '0');
|
||||||
$randomNumber = rand();
|
$randomNumber = rand();
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUser($id);
|
$this->wpSegment->synchronizeUser($id);
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber->countConfirmations)->equals(0);
|
expect($wpSubscriber->countConfirmations)->equals(0);
|
||||||
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($wpSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
@@ -125,9 +134,9 @@ class WPTest extends \MailPoetTest {
|
|||||||
public function testItSynchronizeNewUsers() {
|
public function testItSynchronizeNewUsers() {
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribersCount = $this->getSubscribersCount();
|
$subscribersCount = $this->getSubscribersCount();
|
||||||
expect($subscribersCount)->equals(3);
|
expect($subscribersCount)->equals(3);
|
||||||
}
|
}
|
||||||
@@ -139,7 +148,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
'status' => Subscriber::STATUS_SUBSCRIBED,
|
'status' => Subscriber::STATUS_SUBSCRIBED,
|
||||||
]);
|
]);
|
||||||
$id = $this->insertUser($randomNumber);
|
$id = $this->insertUser($randomNumber);
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
$wpSubscriber = Segment::getWPSegment()->subscribers()->where('wp_user_id', $id)->findOne();
|
||||||
expect($wpSubscriber)->notEmpty();
|
expect($wpSubscriber)->notEmpty();
|
||||||
expect($wpSubscriber->id)->equals($subscriber->id);
|
expect($wpSubscriber->id)->equals($subscriber->id);
|
||||||
@@ -148,27 +157,27 @@ class WPTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItSynchronizeEmails() {
|
public function testItSynchronizeEmails() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->updateWPUserEmail($id, 'user-sync-test-xx@email.com');
|
$this->updateWPUserEmail($id, 'user-sync-test-xx@email.com');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber->email)->equals('user-sync-test-xx@email.com');
|
expect($subscriber->email)->equals('user-sync-test-xx@email.com');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRemovesUsersWithEmptyEmailsFromSunscribersDuringSynchronization() {
|
public function testRemovesUsersWithEmptyEmailsFromSunscribersDuringSynchronization() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->updateWPUserEmail($id, '');
|
$this->updateWPUserEmail($id, '');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
|
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
|
||||||
$this->deleteWPUser($id);
|
$this->deleteWPUser($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRemovesUsersWithInvalidEmailsFromSunscribersDuringSynchronization() {
|
public function testRemovesUsersWithInvalidEmailsFromSunscribersDuringSynchronization() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->updateWPUserEmail($id, 'ivalid.@email.com');
|
$this->updateWPUserEmail($id, 'ivalid.@email.com');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
|
expect(Subscriber::where('wp_user_id', $id)->count())->equals(0);
|
||||||
$this->deleteWPUser($id);
|
$this->deleteWPUser($id);
|
||||||
}
|
}
|
||||||
@@ -176,7 +185,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
public function testItDoesNotSynchronizeEmptyEmailsForNewUsers() {
|
public function testItDoesNotSynchronizeEmptyEmailsForNewUsers() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
$this->updateWPUserEmail($id, '');
|
$this->updateWPUserEmail($id, '');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber)->isEmpty();
|
expect($subscriber)->isEmpty();
|
||||||
$this->deleteWPUser($id);
|
$this->deleteWPUser($id);
|
||||||
@@ -184,27 +193,27 @@ class WPTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function testItSynchronizeFirstNames() {
|
public function testItSynchronizeFirstNames() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
update_user_meta((int)$id, 'first_name', 'First name');
|
update_user_meta((int)$id, 'first_name', 'First name');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber->firstName)->equals('First name');
|
expect($subscriber->firstName)->equals('First name');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSynchronizeLastNames() {
|
public function testItSynchronizeLastNames() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
update_user_meta((int)$id, 'last_name', 'Last name');
|
update_user_meta((int)$id, 'last_name', 'Last name');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber->lastName)->equals('Last name');
|
expect($subscriber->lastName)->equals('Last name');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSynchronizeFirstNamesUsingDisplayName() {
|
public function testItSynchronizeFirstNamesUsingDisplayName() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->updateWPUserDisplayName($id, 'First name');
|
$this->updateWPUserDisplayName($id, 'First name');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber->firstName)->equals('First name');
|
expect($subscriber->firstName)->equals('First name');
|
||||||
}
|
}
|
||||||
@@ -213,7 +222,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
update_user_meta((int)$id, 'first_name', 'First name');
|
update_user_meta((int)$id, 'first_name', 'First name');
|
||||||
$this->updateWPUserDisplayName($id, 'display_name');
|
$this->updateWPUserDisplayName($id, 'display_name');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
$subscriber = Subscriber::where('wp_user_id', $id)->findOne();
|
||||||
expect($subscriber->firstName)->equals('First name');
|
expect($subscriber->firstName)->equals('First name');
|
||||||
}
|
}
|
||||||
@@ -222,18 +231,18 @@ class WPTest extends \MailPoetTest {
|
|||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
|
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
|
||||||
expect($subscribers->count())->equals(3);
|
expect($subscribers->count())->equals(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItDoesntRemoveUsersFromTrash() {
|
public function testItDoesntRemoveUsersFromTrash() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
|
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
|
||||||
$subscriber->deletedAt = Carbon::now();
|
$subscriber->deletedAt = Carbon::now();
|
||||||
$subscriber->save();
|
$subscriber->save();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
|
$subscriber = Subscriber::where("wp_user_id", $id)->findOne();
|
||||||
expect($subscriber->deletedAt)->notNull();
|
expect($subscriber->deletedAt)->notNull();
|
||||||
}
|
}
|
||||||
@@ -241,7 +250,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
public function testItSynchronizesDeletedWPUsersUsingHooks() {
|
public function testItSynchronizesDeletedWPUsersUsingHooks() {
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribersCount = $this->getSubscribersCount();
|
$subscribersCount = $this->getSubscribersCount();
|
||||||
expect($subscribersCount)->equals(2);
|
expect($subscribersCount)->equals(2);
|
||||||
wp_delete_user((int)$id);
|
wp_delete_user((int)$id);
|
||||||
@@ -252,9 +261,9 @@ class WPTest extends \MailPoetTest {
|
|||||||
public function testItRemovesOrphanedSubscribers() {
|
public function testItRemovesOrphanedSubscribers() {
|
||||||
$this->insertUser();
|
$this->insertUser();
|
||||||
$id = $this->insertUser();
|
$id = $this->insertUser();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$this->deleteWPUser($id);
|
$this->deleteWPUser($id);
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
|
$subscribers = Segment::getWPSegment()->subscribers()->whereIn('wp_user_id', $this->userIds);
|
||||||
expect($subscribers->count())->equals(1);
|
expect($subscribers->count())->equals(1);
|
||||||
}
|
}
|
||||||
@@ -290,7 +299,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$subscriber3->status = Subscriber::STATUS_SUBSCRIBED;
|
$subscriber3->status = Subscriber::STATUS_SUBSCRIBED;
|
||||||
$subscriber3->save();
|
$subscriber3->save();
|
||||||
$this->clearEmail($subscriber3);
|
$this->clearEmail($subscriber3);
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribersCount = $this->getSubscribersCount();
|
$subscribersCount = $this->getSubscribersCount();
|
||||||
expect($subscribersCount)->equals(3);
|
expect($subscribersCount)->equals(3);
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber3->id);
|
$dbSubscriber = Subscriber::findOne($subscriber3->id);
|
||||||
@@ -315,7 +324,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$association->save();
|
$association->save();
|
||||||
$subscribersCount = $this->getSubscribersCount();
|
$subscribersCount = $this->getSubscribersCount();
|
||||||
expect($subscribersCount)->equals(1);
|
expect($subscribersCount)->equals(1);
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$subscribersCount = $this->getSubscribersCount(0);
|
$subscribersCount = $this->getSubscribersCount(0);
|
||||||
expect($subscribersCount)->equals(0);
|
expect($subscribersCount)->equals(0);
|
||||||
}
|
}
|
||||||
@@ -340,7 +349,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
$association->save();
|
$association->save();
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
||||||
expect($dbSubscriber)->notEmpty();
|
expect($dbSubscriber)->notEmpty();
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
||||||
expect($dbSubscriber)->isEmpty();
|
expect($dbSubscriber)->isEmpty();
|
||||||
}
|
}
|
||||||
@@ -354,7 +363,7 @@ class WPTest extends \MailPoetTest {
|
|||||||
'wp_user_id' => $id,
|
'wp_user_id' => $id,
|
||||||
]);
|
]);
|
||||||
update_user_meta((int)$id, 'default_password_nag', '1');
|
update_user_meta((int)$id, 'default_password_nag', '1');
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
||||||
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
}
|
}
|
||||||
@@ -377,17 +386,11 @@ class WPTest extends \MailPoetTest {
|
|||||||
wp_update_user(['ID' => $id, 'user_status' => 2]);
|
wp_update_user(['ID' => $id, 'user_status' => 2]);
|
||||||
$db = ORM::getDb();
|
$db = ORM::getDb();
|
||||||
$db->exec(sprintf('UPDATE %s SET `user_status` = 2 WHERE ID = %s', $wpdb->users, $id));
|
$db->exec(sprintf('UPDATE %s SET `user_status` = 2 WHERE ID = %s', $wpdb->users, $id));
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
$dbSubscriber = Subscriber::findOne($subscriber->id);
|
||||||
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
expect($dbSubscriber->status)->equals(Subscriber::STATUS_UNCONFIRMED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _before() {
|
|
||||||
parent::_before();
|
|
||||||
$this->settings = ContainerWrapper::getInstance()->get(SettingsController::class);
|
|
||||||
$this->cleanData();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function _after() {
|
public function _after() {
|
||||||
$this->cleanData();
|
$this->cleanData();
|
||||||
}
|
}
|
||||||
|
@@ -3,14 +3,11 @@
|
|||||||
namespace MailPoet\Test\Subscription;
|
namespace MailPoet\Test\Subscription;
|
||||||
|
|
||||||
use MailPoet\Config\Populator;
|
use MailPoet\Config\Populator;
|
||||||
use MailPoet\Form\FormsRepository;
|
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Referrals\ReferralDetector;
|
|
||||||
use MailPoet\Router\Router;
|
use MailPoet\Router\Router;
|
||||||
use MailPoet\Settings\SettingsController;
|
use MailPoet\Settings\SettingsController;
|
||||||
use MailPoet\Settings\SettingsRepository;
|
use MailPoet\Settings\SettingsRepository;
|
||||||
use MailPoet\Subscribers\LinkTokens;
|
use MailPoet\Subscribers\LinkTokens;
|
||||||
use MailPoet\Subscription\Captcha;
|
|
||||||
use MailPoet\Subscription\SubscriptionUrlFactory;
|
use MailPoet\Subscription\SubscriptionUrlFactory;
|
||||||
use MailPoet\WP\Functions as WPFunctions;
|
use MailPoet\WP\Functions as WPFunctions;
|
||||||
|
|
||||||
@@ -24,15 +21,8 @@ class UrlTest extends \MailPoetTest {
|
|||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
parent::_before();
|
parent::_before();
|
||||||
$this->settings = SettingsController::getInstance();
|
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||||
$referralDetector = new ReferralDetector(WPFunctions::get(), $this->settings);
|
$populator = $this->diContainer->get(Populator::class);
|
||||||
$populator = new Populator(
|
|
||||||
$this->settings,
|
|
||||||
WPFunctions::get(),
|
|
||||||
new Captcha,
|
|
||||||
$referralDetector,
|
|
||||||
$this->diContainer->get(FormsRepository::class)
|
|
||||||
);
|
|
||||||
$populator->up();
|
$populator->up();
|
||||||
$this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens);
|
$this->url = new SubscriptionUrlFactory(WPFunctions::get(), $this->settings, new LinkTokens);
|
||||||
}
|
}
|
||||||
|
@@ -34,6 +34,9 @@ class SubscriptionTest extends \MailPoetTest {
|
|||||||
/** @var ConfirmationEmailMailer & MockObject */
|
/** @var ConfirmationEmailMailer & MockObject */
|
||||||
private $confirmationEmailMailer;
|
private $confirmationEmailMailer;
|
||||||
|
|
||||||
|
/** @var WP */
|
||||||
|
private $wpSegment;
|
||||||
|
|
||||||
public function _before() {
|
public function _before() {
|
||||||
$this->orderId = 123; // dummy
|
$this->orderId = 123; // dummy
|
||||||
$this->settings = SettingsController::getInstance();
|
$this->settings = SettingsController::getInstance();
|
||||||
@@ -41,6 +44,7 @@ class SubscriptionTest extends \MailPoetTest {
|
|||||||
$this->confirmationEmailMailer = $this->createMock(ConfirmationEmailMailer::class);
|
$this->confirmationEmailMailer = $this->createMock(ConfirmationEmailMailer::class);
|
||||||
$this->subscription = new Subscription($this->settings, $this->confirmationEmailMailer, $wp);
|
$this->subscription = new Subscription($this->settings, $this->confirmationEmailMailer, $wp);
|
||||||
$this->wcSegment = Segment::getWooCommerceSegment();
|
$this->wcSegment = Segment::getWooCommerceSegment();
|
||||||
|
$this->wpSegment = $this->diContainer->get(WP::class);
|
||||||
|
|
||||||
$subscriber = Subscriber::create();
|
$subscriber = Subscriber::create();
|
||||||
$subscriber->hydrate(Fixtures::get('subscriber_template'));
|
$subscriber->hydrate(Fixtures::get('subscriber_template'));
|
||||||
@@ -53,7 +57,7 @@ class SubscriptionTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItDisplaysACheckedCheckboxIfCurrentUserIsSubscribed() {
|
public function testItDisplaysACheckedCheckboxIfCurrentUserIsSubscribed() {
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$wpUsers = get_users();
|
$wpUsers = get_users();
|
||||||
wp_set_current_user($wpUsers[0]->ID);
|
wp_set_current_user($wpUsers[0]->ID);
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
@@ -65,7 +69,7 @@ class SubscriptionTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItDisplaysAnUncheckedCheckboxIfCurrentUserIsNotSubscribed() {
|
public function testItDisplaysAnUncheckedCheckboxIfCurrentUserIsNotSubscribed() {
|
||||||
WP::synchronizeUsers();
|
$this->wpSegment->synchronizeUsers();
|
||||||
$wpUsers = get_users();
|
$wpUsers = get_users();
|
||||||
wp_set_current_user($wpUsers[0]->ID);
|
wp_set_current_user($wpUsers[0]->ID);
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
|
Reference in New Issue
Block a user