Add source to subscribed entered in admin

[MAILPOET-1377]
This commit is contained in:
Pavel Dohnal
2018-05-11 15:23:51 +01:00
parent f5d59eb00e
commit 11b29a1efa
2 changed files with 13 additions and 3 deletions

View File

@ -14,6 +14,7 @@ use MailPoet\Models\Subscriber;
use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Newsletter\Scheduler\Scheduler;
use MailPoet\Segments\BulkAction; use MailPoet\Segments\BulkAction;
use MailPoet\Segments\SubscribersListings; use MailPoet\Segments\SubscribersListings;
use MailPoet\Subscribers\Source;
use MailPoet\Subscription\Throttling as SubscriptionThrottling; use MailPoet\Subscription\Throttling as SubscriptionThrottling;
use MailPoet\WP\Hooks; use MailPoet\WP\Hooks;
@ -191,6 +192,11 @@ class Subscribers extends APIEndpoint {
return $this->badRequest($errors); return $this->badRequest($errors);
} }
if($subscriber->isNew()) {
$subscriber = Source::setSource($subscriber, Source::ADMINISTRATOR);
$subscriber->save();
}
if(!empty($data['segments'])) { if(!empty($data['segments'])) {
Scheduler::scheduleSubscriberWelcomeNotification($subscriber->id, $data['segments']); Scheduler::scheduleSubscriberWelcomeNotification($subscriber->id, $data['segments']);
} }

View File

@ -16,6 +16,7 @@ use MailPoet\Models\SubscriberIP;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\Setting; use MailPoet\Models\Setting;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
use MailPoet\Subscribers\Source;
class SubscribersTest extends \MailPoetTest { class SubscribersTest extends \MailPoetTest {
function _before() { function _before() {
@ -29,7 +30,8 @@ class SubscribersTest extends \MailPoetTest {
'email' => 'john@mailpoet.com', 'email' => 'john@mailpoet.com',
'first_name' => 'John', 'first_name' => 'John',
'last_name' => 'Doe', 'last_name' => 'Doe',
'status' => Subscriber::STATUS_UNCONFIRMED 'status' => Subscriber::STATUS_UNCONFIRMED,
'source' => Source::API,
)); ));
$this->subscriber_2 = Subscriber::createOrUpdate(array( $this->subscriber_2 = Subscriber::createOrUpdate(array(
'email' => 'jane@mailpoet.com', 'email' => 'jane@mailpoet.com',
@ -39,7 +41,8 @@ class SubscribersTest extends \MailPoetTest {
'segments' => array( 'segments' => array(
$this->segment_1->id, $this->segment_1->id,
$this->segment_2->id $this->segment_2->id
) ),
'source' => Source::API,
)); ));
$this->form = Form::createOrUpdate(array( $this->form = Form::createOrUpdate(array(
@ -125,6 +128,7 @@ class SubscribersTest extends \MailPoetTest {
expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST); expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST);
expect($response->errors[0]['message']) expect($response->errors[0]['message'])
->equals('Your email address is invalid!'); ->equals('Your email address is invalid!');
expect($subscriber->source)->equals('administrator');
} }
function testItCanSaveAnExistingSubscriber() { function testItCanSaveAnExistingSubscriber() {
@ -140,9 +144,9 @@ class SubscribersTest extends \MailPoetTest {
Subscriber::findOne($this->subscriber_2->id)->asArray() Subscriber::findOne($this->subscriber_2->id)->asArray()
); );
expect($response->data['first_name'])->equals('Super Jane'); expect($response->data['first_name'])->equals('Super Jane');
expect($response->data['source'])->equals('api');
} }
function testItCanRemoveListsFromAnExistingSubscriber() { function testItCanRemoveListsFromAnExistingSubscriber() {
$router = new Subscribers(); $router = new Subscribers();
$subscriber_data = $this->subscriber_2->asArray(); $subscriber_data = $this->subscriber_2->asArray();