function widget_submit()
{
// Check the nonce.
if (is_user_logged_in()) {
check_admin_referer('blogsub_subscribe_' . get_current_blog_id());
}
if (empty($_REQUEST['email'])) {
return false;
}
$redirect_fragment = false;
if (isset($_REQUEST['redirect_fragment'])) {
$redirect_fragment = preg_replace('/[^a-z0-9_-]/i', '', $_REQUEST['redirect_fragment']);
}
if (!$redirect_fragment) {
$redirect_fragment = 'subscribe-blog';
}
$subscribe = Jetpack_Subscriptions::subscribe($_REQUEST['email'], 0, false, array('source' => 'widget', 'widget-in-use' => is_active_widget(false, false, 'blog_subscription', true) ? 'yes' : 'no', 'comment_status' => '', 'server_data' => $_SERVER));
if (is_wp_error($subscribe)) {
$error = $subscribe->get_error_code();
} else {
$error = false;
foreach ($subscribe as $response) {
if (is_wp_error($response)) {
$error = $response->get_error_code();
break;
}
}
}
switch ($error) {
case false:
$result = 'success';
break;
case 'invalid_email':
$result = $error;
break;
case 'active':
case 'blocked_email':
$result = 'opted_out';
break;
case 'pending':
$result = 'already';
break;
default:
$result = 'error';
break;
}
$redirect = add_query_arg('subscribe', $result);
/**
* Fires on each subscription form submission.
*
* @module subscriptions
*
* @since 3.7.0
*
* @param string $result Result of form submission: success, invalid_email, already, error.
*/
do_action('jetpack_subscriptions_form_submission', $result);
wp_safe_redirect("{$redirect}#{$redirect_fragment}");
exit;
}