Subscribe on registration

This commit is contained in:
Jonathan Labreuille
2016-01-14 15:18:44 +01:00
parent f5c7bb87af
commit a63ce3cdac
5 changed files with 129 additions and 29 deletions

View File

@ -36,6 +36,36 @@ class Hooks {
}
}
// Subscribe in registration form
if(
isset($subscribe_settings['on_register']['enabled'])
&& $subscribe_settings['on_register']['enabled']
) {
if(is_multisite()) {
add_action(
'signup_extra_fields',
'\MailPoet\Subscription\Registration::extendForm'
);
add_action(
'wpmu_validate_user_signup',
'\MailPoet\Subscription\Registration::onMSRegister',
60,
1
);
} else {
add_action(
'register_form',
'\MailPoet\Subscription\Registration::extendForm'
);
add_action(
'register_post',
'\MailPoet\Subscription\Registration::onRegister',
60,
3
);
}
}
// WP Users synchronization
add_action(
'user_register',

View File

@ -16,15 +16,34 @@ class Setting extends Model {
}
public static function getValue($key, $default = null) {
$setting = Setting::where('name', $key)->findOne();
if($setting === false) {
return $default;
} else {
if(is_serialized($setting->value)) {
return unserialize($setting->value);
$keys = explode('.', $key);
if(count($keys) === 1) {
$setting = Setting::where('name', $key)->findOne();
if($setting === false) {
return $default;
} else {
return $setting->value;
if(is_serialized($setting->value)) {
return unserialize($setting->value);
} else {
return $setting->value;
}
}
} else {
$main_key = array_shift($keys);
$setting = static::getValue($main_key, $default);
if($setting !== $default) {
for($i = 0, $count = count($keys); $i < $count; $i++) {
if(array_key_exists($keys[$i], $setting)) {
$setting = $setting[$keys[$i]];
} else {
return $default;
}
}
}
return $setting;
}
}
@ -67,16 +86,4 @@ class Setting extends Model {
$exists->value = $model['value'];
return $exists->save();
}
public static function hasSignupConfirmation() {
$signup_confirmation = Setting::getValue('signup_confirmation', array());
$has_signup_confirmation = true;
if(array_key_exists('enabled', $signup_confirmation)) {
$has_signup_confirmation = filter_var(
$signup_confirmation['enabled'],
FILTER_VALIDATE_BOOLEAN
);
}
return $has_signup_confirmation;
}
}

View File

@ -61,9 +61,7 @@ class Subscriber extends Model {
$subscriber->setExpr('deleted_at', 'NULL');
}
if(Setting::hasSignupConfirmation()) {
// reset status of existing subscribers if signup confirmation
// is turned on
if((bool)Setting::getValue('signup_confirmation.enabled')) {
if($subscriber->status !== 'subscribed') {
$subscriber->sendConfirmationEmail();
}

View File

@ -9,10 +9,9 @@ class Comment {
const PENDING_APPROVAL = 0;
static function extendForm() {
$subscribe_settings = Setting::getValue('subscribe');
$label = (isset($subscribe_settings['on_comment']['label'])
? $subscribe_settings['on_comment']['label']
: __('Yes, add me to your mailing list.')
$label = Setting::getValue(
'subscribe.on_comment.label',
__('Yes, add me to your mailing list.')
);
print '<p class="comment-form-mailpoet">
@ -73,10 +72,9 @@ class Comment {
}
private static function subscribeAuthorOfComment($comment_id) {
$subscribe_settings = Setting::getValue('subscribe');
$segment_ids = (array)$subscribe_settings['on_comment']['segments'];
$segment_ids = Setting::getValue('subscribe.on_comment.segments', array());
if($subscribe_settings !== null) {
if(!empty($segment_ids)) {
$comment = get_comment($comment_id);
$result = Subscriber::subscribe(

View File

@ -0,0 +1,67 @@
<?php
namespace MailPoet\Subscription;
use \MailPoet\Models\Setting;
use \MailPoet\Models\Subscriber;
class Registration {
static function extendForm() {
$label = Setting::getValue(
'subscribe.on_register.label',
__('Yes, add me to your mailing list.')
);
print '<p class="registration-form-mailpoet">
<label for="mailpoet_subscribe_on_register">
<input
type="checkbox"
id="mailpoet_subscribe_on_register"
value="1"
name="mailpoet[subscribe_on_register]"
/>&nbsp;'.esc_attr($label).'
</label>
</p>';
}
static function onMSRegister($result) {
if(empty($result['errors']->errors)) {
if(
isset($_POST['mailpoet']['subscribe_on_register'])
&& $_POST['mailpoet']['subscribe_on_register']
) {
static::subscribeNewUser(
$result['user_name'],
$result['user_email']
);
}
}
return $result;
}
static function onRegister(
$user_login,
$user_email = null,
$errors = null
) {
if(
isset($_POST['mailpoet']['subscribe_on_register'])
&& $_POST['mailpoet']['subscribe_on_register']
) {
static::subscribeNewUser($user_login, $user_email);
}
}
private static function subscribeNewUser($login, $email) {
$segment_ids = Setting::getValue('subscribe.on_comment.segments', array());
if(!empty($segment_ids)) {
Subscriber::subscribe(
array(
'email' => $email,
'first_name' => $login
),
$segment_ids
);
}
}
}