Prevent WP users from being trashed/deleted

- return actual rowCount of affected rows for bulk actions (based on PDO last statement)
- prevent removal of WP Users segment relationship with subscribers.
This commit is contained in:
Jonathan Labreuille
2016-05-20 16:58:02 +02:00
parent 15a21e5745
commit c4ddb38d18
3 changed files with 82 additions and 36 deletions

View File

@ -17,10 +17,18 @@ class SubscriberSegment extends Model {
}
static function removeSubscriptions($subscriber, $segment_ids = array()) {
$wp_users_segment = Segment::getWPUsers();
if($subscriber->id > 0) {
if(!empty($segment_ids)) {
// subscribe to segments
// unsubscribe from segments
foreach($segment_ids as $segment_id) {
// do not remove subscriptions to the WP Users segment
if($wp_users_segment->id === (int)$segment_id) {
continue;
}
if((int)$segment_id > 0) {
self::createOrUpdate(array(
'subscriber_id' => $subscriber->id,
@ -29,9 +37,11 @@ class SubscriberSegment extends Model {
));
}
}
return true;
} else {
// unsubscribe from all segments
SubscriberSegment::where('subscriber_id', $subscriber->id)
// unsubscribe from all segments (except the WP users segment)
return SubscriberSegment::where('subscriber_id', $subscriber->id)
->whereNotEqual('segment_id', $wp_users_segment->id)
->findResultSet()
->set('status', Subscriber::STATUS_UNSUBSCRIBED)
->save();
@ -52,9 +62,11 @@ class SubscriberSegment extends Model {
));
}
}
return true;
} else {
// subscribe to all segments
SubscriberSegment::where('subscriber_id', $subscriber->id)
return SubscriberSegment::where('subscriber_id', $subscriber->id)
->findResultSet()
->set('status', Subscriber::STATUS_SUBSCRIBED)
->save();