diff --git a/lib/API/JSON/v1/Subscribers.php b/lib/API/JSON/v1/Subscribers.php index 70cc04ae7f..a4fee7355f 100644 --- a/lib/API/JSON/v1/Subscribers.php +++ b/lib/API/JSON/v1/Subscribers.php @@ -14,6 +14,7 @@ use MailPoet\Models\Subscriber; use MailPoet\Newsletter\Scheduler\Scheduler; use MailPoet\Segments\BulkAction; use MailPoet\Segments\SubscribersListings; +use MailPoet\Subscribers\Source; use MailPoet\Subscription\Throttling as SubscriptionThrottling; use MailPoet\WP\Hooks; @@ -191,6 +192,11 @@ class Subscribers extends APIEndpoint { return $this->badRequest($errors); } + if($subscriber->isNew()) { + $subscriber = Source::setSource($subscriber, Source::ADMINISTRATOR); + $subscriber->save(); + } + if(!empty($data['segments'])) { Scheduler::scheduleSubscriberWelcomeNotification($subscriber->id, $data['segments']); } diff --git a/tests/unit/API/JSON/v1/SubscribersTest.php b/tests/unit/API/JSON/v1/SubscribersTest.php index a4e2d334f3..8143eb91f1 100644 --- a/tests/unit/API/JSON/v1/SubscribersTest.php +++ b/tests/unit/API/JSON/v1/SubscribersTest.php @@ -16,6 +16,7 @@ use MailPoet\Models\SubscriberIP; use MailPoet\Models\Segment; use MailPoet\Models\Setting; use MailPoet\Models\SubscriberSegment; +use MailPoet\Subscribers\Source; class SubscribersTest extends \MailPoetTest { function _before() { @@ -29,7 +30,8 @@ class SubscribersTest extends \MailPoetTest { 'email' => 'john@mailpoet.com', 'first_name' => 'John', 'last_name' => 'Doe', - 'status' => Subscriber::STATUS_UNCONFIRMED + 'status' => Subscriber::STATUS_UNCONFIRMED, + 'source' => Source::API, )); $this->subscriber_2 = Subscriber::createOrUpdate(array( 'email' => 'jane@mailpoet.com', @@ -39,7 +41,8 @@ class SubscribersTest extends \MailPoetTest { 'segments' => array( $this->segment_1->id, $this->segment_2->id - ) + ), + 'source' => Source::API, )); $this->form = Form::createOrUpdate(array( @@ -125,6 +128,7 @@ class SubscribersTest extends \MailPoetTest { expect($response->status)->equals(APIResponse::STATUS_BAD_REQUEST); expect($response->errors[0]['message']) ->equals('Your email address is invalid!'); + expect($subscriber->source)->equals('administrator'); } function testItCanSaveAnExistingSubscriber() { @@ -140,9 +144,9 @@ class SubscribersTest extends \MailPoetTest { Subscriber::findOne($this->subscriber_2->id)->asArray() ); expect($response->data['first_name'])->equals('Super Jane'); + expect($response->data['source'])->equals('api'); } - function testItCanRemoveListsFromAnExistingSubscriber() { $router = new Subscribers(); $subscriber_data = $this->subscriber_2->asArray();