Renamed method names for better clarity + refactoring

- renamed getWPUsers() to getWPSegment()
- renamed SubscriberSegment methods
This commit is contained in:
Jonathan Labreuille
2016-05-24 13:44:08 +02:00
parent ceebb18bdf
commit da755b7902
6 changed files with 81 additions and 59 deletions

View File

@@ -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

View File

@@ -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();
} }

View File

@@ -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();
}); });

View File

@@ -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) {

View File

@@ -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(

View File

@@ -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);
} }
} }
} }