Sends welcome notifications when subscribing to lists via MP's API

[MAILPOET-1295]
This commit is contained in:
mrcasual
2018-03-15 09:04:30 -04:00
committed by pavel-mailpoet
parent 4177701044
commit 78f9fea2b0
2 changed files with 53 additions and 5 deletions

View File

@@ -37,11 +37,13 @@ class API {
return $data;
}
function subscribeToList($subscriber_id, $segment_id) {
return $this->subscribeToLists($subscriber_id, array($segment_id));
function subscribeToList($subscriber_id, $segment_id, $options = array()) {
return $this->subscribeToLists($subscriber_id, array($segment_id), $options);
}
function subscribeToLists($subscriber_id, array $segments_ids) {
function subscribeToLists($subscriber_id, array $segments_ids, $options = array()) {
$schedule_welcome_email = (isset($options['schedule_welcome_email']) && $options['schedule_welcome_email'] === false) ? false : true;
if(empty($segments_ids)) {
throw new \Exception(__('At least one segment ID is required.', 'mailpoet'));
}
@@ -79,6 +81,12 @@ class API {
}
SubscriberSegment::subscribeToSegments($subscriber, $found_segments_ids);
// schedule welcome email
if($schedule_welcome_email) {
$this->_scheduleWelcomeNotification($subscriber, $found_segments_ids);
}
return $subscriber->withCustomFields()->withSubscriptions()->asArray();
}

View File

@@ -129,7 +129,8 @@ class APITest extends \MailPoetTest {
1,
array(
2
)
),
array()
)
);
}
@@ -174,6 +175,45 @@ class APITest extends \MailPoetTest {
expect($result['subscriptions'][0]['segment_id'])->equals($segment->id);
}
function testItSchedulesWelcomeNotificationByDefaultAfterSubscriberSubscriberToLists() {
$API = Stub::makeEmptyExcept(
new \MailPoet\API\MP\v1\API(),
'subscribeToLists',
array(
'_scheduleWelcomeNotification' => Stub::once()
), $this);
$subscriber = Subscriber::create();
$subscriber->hydrate(Fixtures::get('subscriber_template'));
$subscriber->save();
$segment = Segment::createOrUpdate(
array(
'name' => 'Default',
'type' => Segment::TYPE_DEFAULT
)
);
$API->subscribeToLists($subscriber->id, array($segment->id));
}
function testItDoesNotScheduleWelcomeNotificationAfterSubscribingSubscriberToListsWhenDisabledByOption() {
$API = Stub::makeEmptyExcept(
new \MailPoet\API\MP\v1\API(),
'subscribeToLists',
array(
'_scheduleWelcomeNotification' => Stub::never()
), $this);
$subscriber = Subscriber::create();
$subscriber->hydrate(Fixtures::get('subscriber_template'));
$subscriber->save();
$segment = Segment::createOrUpdate(
array(
'name' => 'Default',
'type' => Segment::TYPE_DEFAULT
)
);
$options = array('schedule_welcome_email' => false);
$API->subscribeToLists($subscriber->id, array($segment->id), $options);
}
function testItGetsSegments() {
$segment = Segment::createOrUpdate(
array(