Renamed method names for better clarity + refactoring
- renamed getWPUsers() to getWPSegment() - renamed SubscriberSegment methods
This commit is contained in:
@@ -109,18 +109,18 @@ class Populator {
|
|||||||
|
|
||||||
private function createDefaultSegments() {
|
private function createDefaultSegments() {
|
||||||
// WP Users segment
|
// WP Users segment
|
||||||
$wp_users_segment = Segment::getWPUsers();
|
$wp_segment = Segment::getWPSegment();
|
||||||
|
|
||||||
if($wp_users_segment === false) {
|
if($wp_segment === false) {
|
||||||
// create the wp users list
|
// create the wp users list
|
||||||
$wp_users_segment = Segment::create();
|
$wp_segment = Segment::create();
|
||||||
$wp_users_segment->hydrate(array(
|
$wp_segment->hydrate(array(
|
||||||
'name' => __('WordPress Users'),
|
'name' => __('WordPress Users'),
|
||||||
'description' =>
|
'description' =>
|
||||||
__('The list containing all of your WordPress users.'),
|
__('The list containing all of your WordPress users.'),
|
||||||
'type' => 'wp_users'
|
'type' => 'wp_users'
|
||||||
));
|
));
|
||||||
$wp_users_segment->save();
|
$wp_segment->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Synchronize WP Users
|
// Synchronize WP Users
|
||||||
|
@@ -93,7 +93,7 @@ class Segment extends Model {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function getWPUsers() {
|
static function getWPSegment() {
|
||||||
return self::where('type', 'wp_users')->findOne();
|
return self::where('type', 'wp_users')->findOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -43,7 +43,7 @@ class Subscriber extends Model {
|
|||||||
|
|
||||||
function delete() {
|
function delete() {
|
||||||
// WP Users cannot be deleted
|
// WP Users cannot be deleted
|
||||||
if($this->wp_user_id !== null) {
|
if($this->isWPUser()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
// delete all relations to segments
|
// delete all relations to segments
|
||||||
@@ -55,13 +55,17 @@ class Subscriber extends Model {
|
|||||||
|
|
||||||
function trash() {
|
function trash() {
|
||||||
// WP Users cannot be trashed
|
// WP Users cannot be trashed
|
||||||
if($this->wp_user_id !== null) {
|
if($this->isWPUser()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return parent::trash();
|
return parent::trash();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isWPUser() {
|
||||||
|
return ($this->wp_user_id !== null);
|
||||||
|
}
|
||||||
|
|
||||||
function sendConfirmationEmail() {
|
function sendConfirmationEmail() {
|
||||||
if($this->status === self::STATUS_UNCONFIRMED) {
|
if($this->status === self::STATUS_UNCONFIRMED) {
|
||||||
$signup_confirmation = Setting::getValue('signup_confirmation');
|
$signup_confirmation = Setting::getValue('signup_confirmation');
|
||||||
@@ -173,7 +177,7 @@ class Subscriber extends Model {
|
|||||||
|
|
||||||
if($subscriber->save()) {
|
if($subscriber->save()) {
|
||||||
// link subscriber to segments
|
// link subscriber to segments
|
||||||
SubscriberSegment::addSubscriptions($subscriber, $segment_ids);
|
SubscriberSegment::subscribeToSegments($subscriber, $segment_ids);
|
||||||
|
|
||||||
// signup confirmation
|
// signup confirmation
|
||||||
if($subscriber->status !== self::STATUS_SUBSCRIBED) {
|
if($subscriber->status !== self::STATUS_SUBSCRIBED) {
|
||||||
@@ -435,10 +439,10 @@ class Subscriber extends Model {
|
|||||||
($new_status === self::STATUS_UNSUBSCRIBED)
|
($new_status === self::STATUS_UNSUBSCRIBED)
|
||||||
) {
|
) {
|
||||||
// make sure we unsubscribe the user from all segments
|
// make sure we unsubscribe the user from all segments
|
||||||
SubscriberSegment::removeSubscriptions($subscriber);
|
SubscriberSegment::unsubscribeFromSegments($subscriber);
|
||||||
} else {
|
} else {
|
||||||
if($segment_ids !== false) {
|
if($segment_ids !== false) {
|
||||||
SubscriberSegment::setSubscriptions($subscriber, $segment_ids);
|
SubscriberSegment::resetSubscriptions($subscriber, $segment_ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -502,11 +506,8 @@ class Subscriber extends Model {
|
|||||||
$subscribers_count = 0;
|
$subscribers_count = 0;
|
||||||
$subscribers = $orm->findResultSet();
|
$subscribers = $orm->findResultSet();
|
||||||
foreach($subscribers as $subscriber) {
|
foreach($subscribers as $subscriber) {
|
||||||
try {
|
SubscriberSegment::resetSubscriptions($subscriber, array($segment->id));
|
||||||
SubscriberSegment::setSubscriptions($subscriber, array($segment->id));
|
$subscribers_count++;
|
||||||
$subscribers_count++;
|
|
||||||
} catch(Exception $e) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return array(
|
return array(
|
||||||
'subscribers' => $subscribers_count,
|
'subscribers' => $subscribers_count,
|
||||||
@@ -526,11 +527,8 @@ class Subscriber extends Model {
|
|||||||
// delete relations with segment
|
// delete relations with segment
|
||||||
$subscribers = $orm->findResultSet();
|
$subscribers = $orm->findResultSet();
|
||||||
foreach($subscribers as $subscriber) {
|
foreach($subscribers as $subscriber) {
|
||||||
try {
|
SubscriberSegment::unsubscribeFromSegments($subscriber, array($segment->id));
|
||||||
SubscriberSegment::removeSubscriptions($subscriber, array($segment->id));
|
$subscribers_count++;
|
||||||
$subscribers_count++;
|
|
||||||
} catch(Exception $e) {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
@@ -545,12 +543,8 @@ class Subscriber extends Model {
|
|||||||
$subscribers = $orm->findResultSet();
|
$subscribers = $orm->findResultSet();
|
||||||
$subscribers_count = 0;
|
$subscribers_count = 0;
|
||||||
foreach($subscribers as $subscriber) {
|
foreach($subscribers as $subscriber) {
|
||||||
try {
|
SubscriberSegment::unsubscribeFromSegments($subscriber);
|
||||||
SubscriberSegment::removeSubscriptions($subscriber);
|
$subscribers_count++;
|
||||||
$subscribers_count++;
|
|
||||||
} catch(Exception $e) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $subscribers_count;
|
return $subscribers_count;
|
||||||
@@ -582,7 +576,7 @@ class Subscriber extends Model {
|
|||||||
$subscribers = $orm->findMany();
|
$subscribers = $orm->findMany();
|
||||||
foreach($subscribers as $subscriber) {
|
foreach($subscribers as $subscriber) {
|
||||||
try {
|
try {
|
||||||
SubscriberSegment::addSubscriptions($subscriber, array($segment->id));
|
SubscriberSegment::subscribeToSegments($subscriber, array($segment->id));
|
||||||
$subscribers_count++;
|
$subscribers_count++;
|
||||||
} catch(Exception $e) {
|
} catch(Exception $e) {
|
||||||
}
|
}
|
||||||
@@ -609,20 +603,12 @@ class Subscriber extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function bulkDelete($orm) {
|
static function bulkDelete($orm) {
|
||||||
return parent::bulkAction($orm, function($ids) {
|
return parent::bulkAction($orm, function($subscriber_ids) {
|
||||||
$wp_users_segment = Segment::getWPUsers();
|
// delete all subscriber/segment relationships
|
||||||
|
SubscriberSegment::deleteSubscriptionsForAll($subscriber_ids);
|
||||||
// delete subscribers' relations to segments (except WP Users' segment)
|
|
||||||
$subscriptions = SubscriberSegment::whereIn('subscriber_id', $ids);
|
|
||||||
if($wp_users_segment !== false) {
|
|
||||||
$subscriptions = $subscriptions->whereNotEqual(
|
|
||||||
'segment_id', $wp_users_segment->id
|
|
||||||
);
|
|
||||||
}
|
|
||||||
$subscriptions->deleteMany();
|
|
||||||
|
|
||||||
// delete subscribers (except WP Users)
|
// delete subscribers (except WP Users)
|
||||||
Subscriber::whereIn('id', $ids)
|
Subscriber::whereIn('id', $subscriber_ids)
|
||||||
->whereNull('wp_user_id')
|
->whereNull('wp_user_id')
|
||||||
->deleteMany();
|
->deleteMany();
|
||||||
});
|
});
|
||||||
|
@@ -16,18 +16,19 @@ class SubscriberSegment extends Model {
|
|||||||
return $this->has_one(__NAMESPACE__.'\Subscriber', 'id', 'subscriber_id');
|
return $this->has_one(__NAMESPACE__.'\Subscriber', 'id', 'subscriber_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
static function removeSubscriptions($subscriber, $segment_ids = array()) {
|
static function unsubscribeFromSegments($subscriber, $segment_ids = array()) {
|
||||||
$wp_users_segment = Segment::getWPUsers();
|
if($subscriber !== false && $subscriber->id > 0) {
|
||||||
|
|
||||||
|
$wp_segment = Segment::getWPSegment();
|
||||||
|
|
||||||
if($subscriber->id > 0) {
|
|
||||||
if(!empty($segment_ids)) {
|
if(!empty($segment_ids)) {
|
||||||
// unsubscribe from segments
|
// unsubscribe from segments
|
||||||
foreach($segment_ids as $segment_id) {
|
foreach($segment_ids as $segment_id) {
|
||||||
|
|
||||||
// do not remove subscriptions to the WP Users segment
|
// do not remove subscriptions to the WP Users segment
|
||||||
if(
|
if(
|
||||||
$wp_users_segment !== false
|
$wp_segment !== false
|
||||||
&& ($wp_users_segment->id === (int)$segment_id)
|
&& ($wp_segment->id === (int)$segment_id)
|
||||||
) {
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -43,22 +44,23 @@ class SubscriberSegment extends Model {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// unsubscribe from all segments (except the WP users segment)
|
// unsubscribe from all segments (except the WP users segment)
|
||||||
$subscritpions = SubscriberSegment::where('subscriber_id', $subscriber->id);
|
$subscriptions = self::where('subscriber_id', $subscriber->id);
|
||||||
|
|
||||||
if($wp_users_segment !== false) {
|
if($wp_segment !== false) {
|
||||||
$subscritpions = $subscritpions->whereNotEqual(
|
$subscriptions = $subscriptions->whereNotEqual(
|
||||||
'segment_id', $wp_users_segment->id
|
'segment_id', $wp_segment->id
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$subscritpions->findResultSet()
|
return $subscriptions->findResultSet()
|
||||||
->set('status', Subscriber::STATUS_UNSUBSCRIBED)
|
->set('status', Subscriber::STATUS_UNSUBSCRIBED)
|
||||||
->save();
|
->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function addSubscriptions($subscriber, $segment_ids = array()) {
|
static function subscribeToSegments($subscriber, $segment_ids = array()) {
|
||||||
if($subscriber->id > 0) {
|
if($subscriber->id > 0) {
|
||||||
if(!empty($segment_ids)) {
|
if(!empty($segment_ids)) {
|
||||||
// subscribe to segments
|
// subscribe to segments
|
||||||
@@ -75,17 +77,51 @@ class SubscriberSegment extends Model {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
// subscribe to all segments
|
// subscribe to all segments
|
||||||
return SubscriberSegment::where('subscriber_id', $subscriber->id)
|
return self::where('subscriber_id', $subscriber->id)
|
||||||
->findResultSet()
|
->findResultSet()
|
||||||
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
||||||
->save();
|
->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function setSubscriptions($subscriber, $segment_ids = array()) {
|
static function resetSubscriptions($subscriber, $segment_ids = array()) {
|
||||||
self::removeSubscriptions($subscriber);
|
self::unsubscribeFromSegments($subscriber);
|
||||||
self::addSubscriptions($subscriber, $segment_ids);
|
return self::subscribeToSegments($subscriber, $segment_ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
static function deleteSubscriptionsForAll($subscriber_ids = array()) {
|
||||||
|
if(!empty($subscriber_ids)) {
|
||||||
|
// delete subscribers' relations to segments (except WP Users' segment)
|
||||||
|
$subscriptions = SubscriberSegment::whereIn('subscriber_id', $subscriber_ids);
|
||||||
|
|
||||||
|
$wp_segment = Segment::getWPSegment();
|
||||||
|
if($wp_segment !== false) {
|
||||||
|
$subscriptions = $subscriptions->whereNotEqual(
|
||||||
|
'segment_id', $wp_segment->id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $subscriptions->deleteMany();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static function deleteSubscriptions($subscriber) {
|
||||||
|
if($subscriber !== false && $subscriber->id > 0) {
|
||||||
|
// delete all relationships to segments (except the WP users segment)
|
||||||
|
$subscriptions = self::where('subscriber_id', $subscriber->id);
|
||||||
|
|
||||||
|
$wp_segment = Segment::getWPSegment();
|
||||||
|
if($wp_segment !== false) {
|
||||||
|
$subscriptions = $subscriptions->whereNotEqual(
|
||||||
|
'segment_id', $wp_segment->id
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $subscriptions->delete();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function subscribed($orm) {
|
static function subscribed($orm) {
|
||||||
|
@@ -8,7 +8,7 @@ use MailPoet\Newsletter\Scheduler\Scheduler;
|
|||||||
class WP {
|
class WP {
|
||||||
static function synchronizeUser($wp_user_id, $old_wp_user_data = false) {
|
static function synchronizeUser($wp_user_id, $old_wp_user_data = false) {
|
||||||
$wp_user = \get_userdata($wp_user_id);
|
$wp_user = \get_userdata($wp_user_id);
|
||||||
$wp_users_segment = Segment::getWPUsers();
|
$wp_users_segment = Segment::getWPSegment();
|
||||||
|
|
||||||
if($wp_user === false or $wp_users_segment === false) return;
|
if($wp_user === false or $wp_users_segment === false) return;
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ class WP {
|
|||||||
$subscriber = Subscriber::createOrUpdate($data);
|
$subscriber = Subscriber::createOrUpdate($data);
|
||||||
if($subscriber->getErrors() === false && $subscriber->id > 0) {
|
if($subscriber->getErrors() === false && $subscriber->id > 0) {
|
||||||
// add subscriber to the WP Users segment
|
// add subscriber to the WP Users segment
|
||||||
SubscriberSegment::addSubscriptions(
|
SubscriberSegment::subscribeToSegments(
|
||||||
$subscriber,
|
$subscriber,
|
||||||
array($wp_users_segment->id)
|
array($wp_users_segment->id)
|
||||||
);
|
);
|
||||||
@@ -73,7 +73,7 @@ class WP {
|
|||||||
|
|
||||||
static function synchronizeUsers() {
|
static function synchronizeUsers() {
|
||||||
// get wordpress users list
|
// get wordpress users list
|
||||||
$wp_users_segment = Segment::getWPUsers();
|
$wp_users_segment = Segment::getWPSegment();
|
||||||
|
|
||||||
// fetch all wp users id
|
// fetch all wp users id
|
||||||
$wp_users = \get_users(array(
|
$wp_users = \get_users(array(
|
||||||
|
@@ -69,7 +69,7 @@ class Pages {
|
|||||||
if($this->subscriber->status !== Subscriber::STATUS_UNSUBSCRIBED) {
|
if($this->subscriber->status !== Subscriber::STATUS_UNSUBSCRIBED) {
|
||||||
$this->subscriber->status = Subscriber::STATUS_UNSUBSCRIBED;
|
$this->subscriber->status = Subscriber::STATUS_UNSUBSCRIBED;
|
||||||
$this->subscriber->save();
|
$this->subscriber->save();
|
||||||
SubscriberSegment::removeSubscriptions($this->subscriber);
|
SubscriberSegment::unsubscribeFromSegments($this->subscriber);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user