avoid duplicating code

This commit is contained in:
Jonathan Labreuille
2016-09-23 12:56:27 +02:00
parent d5cff4f0d3
commit a328d3b48a
3 changed files with 11 additions and 40 deletions

View File

@ -8,7 +8,6 @@ use \MailPoet\Models\Subscriber;
use \MailPoet\Form\Renderer as FormRenderer; use \MailPoet\Form\Renderer as FormRenderer;
use \MailPoet\Form\Util; use \MailPoet\Form\Util;
use \MailPoet\Util\Security; use \MailPoet\Util\Security;
use \MailPoet\Util\Url;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;

View File

@ -2,7 +2,6 @@
namespace MailPoet\Router\Endpoints; namespace MailPoet\Router\Endpoints;
use MailPoet\Subscription as UserSubscription; use MailPoet\Subscription as UserSubscription;
use MailPoet\Util\Url;
if(!defined('ABSPATH')) exit; if(!defined('ABSPATH')) exit;

View File

@ -1,5 +1,7 @@
<?php <?php
namespace MailPoet\Subscription; namespace MailPoet\Subscription;
use \MailPoet\API\Endpoints\Subscribers;
use \MailPoet\API\Response as APIResponse;
use \MailPoet\Models\Subscriber; use \MailPoet\Models\Subscriber;
use \MailPoet\Models\StatisticsForms; use \MailPoet\Models\StatisticsForms;
use \MailPoet\Models\Form as FormModel; use \MailPoet\Models\Form as FormModel;
@ -13,54 +15,25 @@ class Form {
'method', 'method',
'mailpoet_redirect' 'mailpoet_redirect'
); );
$data = array_diff_key($_POST, array_flip($reserved_keywords)); $data = array_diff_key($_POST, array_flip($reserved_keywords));
$form_id = isset($data['form_id']) ? $data['form_id'] : 0;
$form_id = (isset($data['form_id']) ? (int)$data['form_id'] : false); $endpoint = new Subscribers();
$form = FormModel::findOne($form_id);
unset($data['form_id']);
$segment_ids = (!empty($data['segments']) $response = $endpoint->subscribe($data);
? (array)$data['segments']
: array()
);
unset($data['segments']);
if(empty($segment_ids)) { if($response->status !== APIResponse::STATUS_OK) {
Url::redirectBack(array( Url::redirectBack(array(
'mailpoet_error' => $form_id, 'mailpoet_error' => isset($data['form_id']) ? $data['form_id'] : true,
'mailpoet_success' => null
));
}
$subscriber = Subscriber::subscribe($data, $segment_ids);
$errors = $subscriber->getErrors();
if($errors !== false) {
Url::redirectBack(array(
'mailpoet_error' => $form_id,
'mailpoet_success' => null 'mailpoet_success' => null
)); ));
} else { } else {
$meta = array(); if(isset($response->meta['redirect_url'])) {
Url::redirectTo($response->meta['redirect_url']);
if($form !== false) {
// record form statistics
StatisticsForms::record($form->id, $subscriber->id);
$form = $form->asArray();
if($form['settings']['on_success'] === 'page') {
// redirect to a page on a success, pass the page url in the meta
$meta['redirect_url'] = get_permalink($form['settings']['success_page']);
} else if($form['settings']['on_success'] === 'url') {
$meta['redirect_url'] = $form['settings']['success_url'];
}
}
if(isset($meta['redirect_url'])) {
Url::redirectTo($meta['redirect_url']);
} else { } else {
Url::redirectBack(array( Url::redirectBack(array(
'mailpoet_success' => $form['id'], 'mailpoet_success' => $form_id,
'mailpoet_error' => null 'mailpoet_error' => null
)); ));
} }