Fix fubscription form failing when some fields are absent or don't exist [MAILPOET-764]

This commit is contained in:
Alexey Stoletniy
2017-01-24 21:12:56 +03:00
parent 9a3c4ff7de
commit bfdc13a8d1
5 changed files with 218 additions and 2 deletions

View File

@ -65,6 +65,12 @@ class Subscribers extends APIEndpoint {
$form = Form::findOne($form_id);
unset($data['form_id']);
if(!$form) {
return $this->badRequest(array(
APIError::BAD_REQUEST => __('Please specify a valid form ID.', 'mailpoet')
));
}
$segment_ids = (!empty($data['segments'])
? (array)$data['segments']
: array()
@ -77,6 +83,10 @@ class Subscribers extends APIEndpoint {
));
}
// only accept fields defined in the form
$form_fields = $form->getFieldList();
$data = array_intersect_key($data, array_flip($form_fields));
$subscriber = Subscriber::subscribe($data, $segment_ids);
$errors = $subscriber->getErrors();