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
|
// WP Users synchronization
|
||||||
add_action(
|
add_action(
|
||||||
'user_register',
|
'user_register',
|
||||||
|
@ -16,15 +16,34 @@ class Setting extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static function getValue($key, $default = null) {
|
public static function getValue($key, $default = null) {
|
||||||
$setting = Setting::where('name', $key)->findOne();
|
$keys = explode('.', $key);
|
||||||
if($setting === false) {
|
|
||||||
return $default;
|
if(count($keys) === 1) {
|
||||||
} else {
|
$setting = Setting::where('name', $key)->findOne();
|
||||||
if(is_serialized($setting->value)) {
|
if($setting === false) {
|
||||||
return unserialize($setting->value);
|
return $default;
|
||||||
} else {
|
} 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'];
|
$exists->value = $model['value'];
|
||||||
return $exists->save();
|
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');
|
$subscriber->setExpr('deleted_at', 'NULL');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Setting::hasSignupConfirmation()) {
|
if((bool)Setting::getValue('signup_confirmation.enabled')) {
|
||||||
// reset status of existing subscribers if signup confirmation
|
|
||||||
// is turned on
|
|
||||||
if($subscriber->status !== 'subscribed') {
|
if($subscriber->status !== 'subscribed') {
|
||||||
$subscriber->sendConfirmationEmail();
|
$subscriber->sendConfirmationEmail();
|
||||||
}
|
}
|
||||||
|
@ -9,10 +9,9 @@ class Comment {
|
|||||||
const PENDING_APPROVAL = 0;
|
const PENDING_APPROVAL = 0;
|
||||||
|
|
||||||
static function extendForm() {
|
static function extendForm() {
|
||||||
$subscribe_settings = Setting::getValue('subscribe');
|
$label = Setting::getValue(
|
||||||
$label = (isset($subscribe_settings['on_comment']['label'])
|
'subscribe.on_comment.label',
|
||||||
? $subscribe_settings['on_comment']['label']
|
__('Yes, add me to your mailing list.')
|
||||||
: __('Yes, add me to your mailing list.')
|
|
||||||
);
|
);
|
||||||
|
|
||||||
print '<p class="comment-form-mailpoet">
|
print '<p class="comment-form-mailpoet">
|
||||||
@ -73,10 +72,9 @@ class Comment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static function subscribeAuthorOfComment($comment_id) {
|
private static function subscribeAuthorOfComment($comment_id) {
|
||||||
$subscribe_settings = Setting::getValue('subscribe');
|
$segment_ids = Setting::getValue('subscribe.on_comment.segments', array());
|
||||||
$segment_ids = (array)$subscribe_settings['on_comment']['segments'];
|
|
||||||
|
|
||||||
if($subscribe_settings !== null) {
|
if(!empty($segment_ids)) {
|
||||||
$comment = get_comment($comment_id);
|
$comment = get_comment($comment_id);
|
||||||
|
|
||||||
$result = Subscriber::subscribe(
|
$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