setupDependencies(); // turn $args into variables extract($args); if ($instance === null) { $instance = $args; } $title = $this->wp->applyFilters( 'widget_title', !empty($instance['title']) ? $instance['title'] : '', $instance, $this->id_base ); // get form $form = Form::getPublished()->findOne($instance['form']); if (!$form) return ''; $form = $form->asArray(); $form_type = 'widget'; if (isset($instance['form_type']) && in_array( $instance['form_type'], [ 'html', 'php', 'iframe', 'shortcode', ] )) { $form_type = $instance['form_type']; } $body = (isset($form['body']) ? $form['body'] : []); $output = ''; if (!empty($body)) { $form_id = $this->id_base . '_' . $form['id']; $data = [ 'form_id' => $form_id, 'form_type' => $form_type, 'form' => $form, 'title' => $title, 'styles' => FormRenderer::renderStyles($form, '#' . $form_id), 'html' => FormRenderer::renderHTML($form), 'before_widget' => (!empty($before_widget) ? $before_widget : ''), 'after_widget' => (!empty($after_widget) ? $after_widget : ''), 'before_title' => (!empty($before_title) ? $before_title : ''), 'after_title' => (!empty($after_title) ? $after_title : ''), ]; // (POST) non ajax success/error variables $data['success'] = ( (isset($_GET['mailpoet_success'])) && ((int)$_GET['mailpoet_success'] === (int)$form['id']) ); $data['error'] = ( (isset($_GET['mailpoet_error'])) && ((int)$_GET['mailpoet_error'] === (int)$form['id']) ); // generate security token $data['token'] = Security::generateToken(); // add API version $data['api_version'] = API::CURRENT_VERSION; // render form $renderer = new ConfigRenderer(); try { $output = $renderer->render('form/widget.html', $data); $output = WPFunctions::get()->doShortcode($output); $output = $this->wp->applyFilters('mailpoet_form_widget_post_process', $output); } catch (\Exception $e) { $output = $e->getMessage(); } } if ($form_type === 'widget') { echo $output; } else { return $output; } } }