Move subscribe() method to a separate class an make it non-static [MAILPOET-1825]
This commit is contained in:
@ -117,73 +117,6 @@ class Subscriber extends Model {
|
||||
);
|
||||
}
|
||||
|
||||
static function subscribe($subscriber_data = array(), $segment_ids = array()) {
|
||||
// filter out keys from the subscriber_data array
|
||||
// that should not be editable when subscribing
|
||||
$subscriber_data = self::filterOutReservedColumns($subscriber_data);
|
||||
|
||||
$settings = new SettingsController();
|
||||
$signup_confirmation_enabled = (bool)$settings->get(
|
||||
'signup_confirmation.enabled'
|
||||
);
|
||||
|
||||
$subscriber_data['subscribed_ip'] = Helpers::getIP();
|
||||
|
||||
$subscriber = self::findOne($subscriber_data['email']);
|
||||
|
||||
if ($subscriber === false || !$signup_confirmation_enabled) {
|
||||
// create new subscriber or update if no confirmation is required
|
||||
$subscriber = self::createOrUpdate($subscriber_data);
|
||||
if ($subscriber->getErrors() !== false) {
|
||||
$subscriber = Source::setSource($subscriber, Source::FORM);
|
||||
$subscriber->save();
|
||||
return $subscriber;
|
||||
}
|
||||
|
||||
$subscriber = self::findOne($subscriber->id);
|
||||
} else {
|
||||
// store subscriber data to be updated after confirmation
|
||||
$subscriber->setUnconfirmedData($subscriber_data);
|
||||
$subscriber->setExpr('updated_at', 'NOW()');
|
||||
}
|
||||
|
||||
// restore trashed subscriber
|
||||
if ($subscriber->deleted_at !== null) {
|
||||
$subscriber->setExpr('deleted_at', 'NULL');
|
||||
}
|
||||
|
||||
// set status depending on signup confirmation setting
|
||||
if ($subscriber->status !== self::STATUS_SUBSCRIBED) {
|
||||
if ($signup_confirmation_enabled === true) {
|
||||
$subscriber->set('status', self::STATUS_UNCONFIRMED);
|
||||
} else {
|
||||
$subscriber->set('status', self::STATUS_SUBSCRIBED);
|
||||
}
|
||||
}
|
||||
|
||||
$subscriber = Source::setSource($subscriber, Source::FORM);
|
||||
|
||||
if ($subscriber->save()) {
|
||||
// link subscriber to segments
|
||||
SubscriberSegment::subscribeToSegments($subscriber, $segment_ids);
|
||||
|
||||
$sender = new ConfirmationEmailMailer();
|
||||
$sender->sendConfirmationEmail($subscriber);
|
||||
|
||||
if ($subscriber->status === self::STATUS_SUBSCRIBED) {
|
||||
$sender = new NewSubscriberNotificationMailer();
|
||||
$sender->send($subscriber, Segment::whereIn('id', $segment_ids)->findMany());
|
||||
|
||||
Scheduler::scheduleSubscriberWelcomeNotification(
|
||||
$subscriber->id,
|
||||
$segment_ids
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return $subscriber;
|
||||
}
|
||||
|
||||
static function filterOutReservedColumns(array $subscriber_data) {
|
||||
$reserved_columns = array(
|
||||
'id',
|
||||
|
Reference in New Issue
Block a user