Subscribe on registration
This commit is contained in:
@ -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',
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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(
|
||||
|
67
lib/Subscription/Registration.php
Normal file
67
lib/Subscription/Registration.php
Normal 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]"
|
||||
/> '.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
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user