Fix all lists removal when editing subscribers [MAILPOET-726]
This commit is contained in:
@ -107,6 +107,9 @@ class Subscribers extends APIEndpoint {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function save($data = array()) {
|
function save($data = array()) {
|
||||||
|
if (empty($data['segments'])) {
|
||||||
|
$data['segments'] = array();
|
||||||
|
}
|
||||||
$subscriber = Subscriber::createOrUpdate($data);
|
$subscriber = Subscriber::createOrUpdate($data);
|
||||||
$errors = $subscriber->getErrors();
|
$errors = $subscriber->getErrors();
|
||||||
|
|
||||||
|
@ -54,6 +54,15 @@ class SubscriberSegment extends Model {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function resubscribeToAllSegments($subscriber) {
|
||||||
|
if($subscriber === false) return false;
|
||||||
|
// (re)subscribe to all segments linked to the subscriber
|
||||||
|
return self::where('subscriber_id', $subscriber->id)
|
||||||
|
->findResultSet()
|
||||||
|
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
||||||
|
->save();
|
||||||
|
}
|
||||||
|
|
||||||
static function subscribeToSegments($subscriber, $segment_ids = array()) {
|
static function subscribeToSegments($subscriber, $segment_ids = array()) {
|
||||||
if($subscriber === false) return false;
|
if($subscriber === false) return false;
|
||||||
if(!empty($segment_ids)) {
|
if(!empty($segment_ids)) {
|
||||||
@ -68,12 +77,6 @@ class SubscriberSegment extends Model {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else {
|
|
||||||
// (re)subscribe to all segments linked to the subscriber
|
|
||||||
return self::where('subscriber_id', $subscriber->id)
|
|
||||||
->findResultSet()
|
|
||||||
->set('status', Subscriber::STATUS_SUBSCRIBED)
|
|
||||||
->save();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +116,20 @@ class SubscribersTest extends MailPoetTest {
|
|||||||
expect($response->data['first_name'])->equals('Super Jane');
|
expect($response->data['first_name'])->equals('Super Jane');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItCanRemoveListsFromAnExistingSubscriber() {
|
||||||
|
$router = new Subscribers();
|
||||||
|
$subscriber_data = $this->subscriber_2->asArray();
|
||||||
|
unset($subscriber_data['created_at']);
|
||||||
|
unset($subscriber_data['segments']);
|
||||||
|
|
||||||
|
$response = $router->save($subscriber_data);
|
||||||
|
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||||
|
expect($response->data)->equals(
|
||||||
|
Subscriber::findOne($this->subscriber_2->id)->asArray()
|
||||||
|
);
|
||||||
|
expect($this->subscriber_2->segments()->findArray())->count(0);
|
||||||
|
}
|
||||||
|
|
||||||
function testItCanRestoreASubscriber() {
|
function testItCanRestoreASubscriber() {
|
||||||
$this->subscriber_1->trash();
|
$this->subscriber_1->trash();
|
||||||
|
|
||||||
|
@ -103,6 +103,28 @@ class SubscriberSegmentTest extends MailPoetTest {
|
|||||||
expect($subscriptions_count)->equals(2);
|
expect($subscriptions_count)->equals(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItCanResubscribeToAllSegments() {
|
||||||
|
$result = SubscriberSegment::subscribeToSegments($this->subscriber, array(
|
||||||
|
$this->segment_1->id,
|
||||||
|
$this->segment_2->id
|
||||||
|
));
|
||||||
|
expect($result)->true();
|
||||||
|
|
||||||
|
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||||
|
expect($subscribed_segments)->count(2);
|
||||||
|
|
||||||
|
$result = SubscriberSegment::unsubscribeFromSegments($this->subscriber);
|
||||||
|
expect($result)->true();
|
||||||
|
|
||||||
|
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||||
|
expect($subscribed_segments)->count(0);
|
||||||
|
|
||||||
|
SubscriberSegment::resubscribeToAllSegments($this->subscriber);
|
||||||
|
|
||||||
|
$subscribed_segments = $this->subscriber->segments()->findArray();
|
||||||
|
expect($subscribed_segments)->count(2);
|
||||||
|
}
|
||||||
|
|
||||||
function testItCanDeleteSubscriptions() {
|
function testItCanDeleteSubscriptions() {
|
||||||
SubscriberSegment::createOrUpdate(array(
|
SubscriberSegment::createOrUpdate(array(
|
||||||
'subscriber_id' => $this->subscriber->id,
|
'subscriber_id' => $this->subscriber->id,
|
||||||
|
Reference in New Issue
Block a user