PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.3.0
JetFormBuilder — Dynamic Blocks Form Builder v1.3.0
3.6.4.1 3.6.4 3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / blocks / render / form-builder.php
jetformbuilder / includes / blocks / render Last commit date
base-select-radio-check.php 4 years ago base.php 4 years ago calculated-field-render.php 4 years ago checkbox-field-render.php 4 years ago date-field-render.php 4 years ago datetime-field-render.php 4 years ago form-break-field-render.php 4 years ago form-builder.php 4 years ago group-break-field-render.php 4 years ago heading-field-render.php 4 years ago media-field-render.php 4 years ago number-field-render.php 4 years ago radio-field-render.php 4 years ago range-field-render.php 4 years ago repeater-field-render.php 4 years ago select-field-render.php 4 years ago submit-field-render.php 4 years ago text-field-render.php 4 years ago textarea-field-render.php 4 years ago time-field-render.php 4 years ago wysiwyg-field-render.php 4 years ago
form-builder.php
246 lines
1 <?php
2
3 namespace Jet_Form_Builder\Blocks\Render;
4
5
6 use Jet_Form_Builder\Classes\Attributes_Trait;
7 use Jet_Form_Builder\Classes\Get_Template_Trait;
8 use Jet_Form_Builder\File_Upload;
9 use Jet_Form_Builder\Live_Form;
10 use Jet_Form_Builder\Plugin;
11 use Jet_Form_Builder\Presets\Preset_Manager;
12
13 // If this file is called directly, abort.
14
15 if ( ! defined( 'WPINC' ) ) {
16 die;
17 }
18
19 /**
20 * Form builder class
21 */
22 class Form_Builder {
23
24 use Attributes_Trait;
25 use Get_Template_Trait;
26
27 public $form_id;
28 public $post;
29 public $args = array();
30
31 private $form_content;
32
33 /**
34 * Constructor for the class
35 *
36 * @param null $form_id
37 * @param bool $post
38 * @param array $args
39 */
40 function __construct( $form_id = null, $post = false, $args = array() ) {
41
42 if ( ! $form_id ) {
43 return;
44 }
45 $this->form_id = $form_id;
46 $this->set_form_args( $args );
47
48 if ( empty( $post ) ) {
49 $this->post = get_post();
50 }
51
52 $this->form_content = Plugin::instance()->form->get_form_content( $form_id );
53 }
54
55 /**
56 * @param $arguments
57 */
58 public function set_form_args( $arguments ) {
59 $this->args = array_intersect_key( $arguments, Plugin::instance()->post_type->get_default_args() );
60
61 return $this;
62 }
63
64
65 /**
66 * Returns form action url
67 *
68 * @return [type] [description]
69 */
70 public function get_form_action_url() {
71
72 $action = add_query_arg(
73 array(
74 Plugin::instance()->form_handler->hook_key => Plugin::instance()->form_handler->hook_val,
75 ),
76 home_url( '/' )
77 );
78
79 return apply_filters( 'jet-form-builder/form-action-url', $action, $this );
80
81 }
82
83 /**
84 * Returns form refer url
85 *
86 * @return [type] [description]
87 */
88 public function get_form_refer_url() {
89
90 global $wp;
91
92 $refer = home_url( $wp->request );
93
94 if ( ! empty( $_SERVER['QUERY_STRING'] ) ) {
95 $refer = trailingslashit( $refer ) . '?' . $_SERVER['QUERY_STRING'];
96 }
97
98 return apply_filters( 'jet-form-builder/form-refer-url', $refer, $this );
99
100 }
101
102 /**
103 * @return mixed|void
104 */
105 public function pre_render() {
106 return apply_filters( 'jet-form-builder/pre-render/' . $this->form_id, false );
107 }
108
109
110 /**
111 * Open form wrapper
112 *
113 * @return string [type] [description]
114 */
115 public function start_form() {
116
117 $start_form = apply_filters( 'jet-form-builder/before-start-form', '', $this );
118
119 $this->add_attribute( 'class', 'jet-form-builder' );
120 $this->add_attribute( 'class', 'layout-' . Live_Form::instance()->spec_data->fields_layout );
121 $this->add_attribute( 'class', 'submit-type-' . Live_Form::instance()->spec_data->submit_type );
122 $this->add_attribute( 'action', $this->get_form_action_url() );
123 $this->add_attribute( 'method', 'POST' );
124 $this->add_attribute( 'data-form-id', $this->form_id );
125 $this->add_attribute( 'data-layout', Live_Form::instance()->spec_data->fields_layout );
126
127 ob_start();
128 include $this->get_global_template( 'common/start-form.php' );
129 $start_form .= ob_get_clean();
130
131 $start_form .= apply_filters( 'jet-form-builder/after-start-form', '', $this );
132
133 return $start_form;
134 }
135
136 /**
137 * Close form wrapper
138 *
139 * @return string [type] [description]
140 */
141 public function end_form() {
142
143 $end_form = apply_filters( 'jet-form-builder/before-end-form', '', $this );
144 $form_id = $this->form_id;
145
146 ob_start();
147
148 if ( Plugin::instance()->captcha ) {
149 Plugin::instance()->captcha->render( $this->form_id );
150 }
151
152 include $this->get_global_template( 'common/end-form.php' );
153
154 Plugin::instance()->blocks->enqueue_frontend_assets();
155 File_Upload::instance()->enqueue_scripts();
156
157 $end_form .= ob_get_clean();
158
159 $end_form .= apply_filters( 'jet-form-builder/after-end-form', '', $this );
160
161 return $end_form;
162 }
163
164
165 /**
166 * Render from HTML
167 *
168 * @param bool $echo
169 *
170 * @return false|string [type] [description]
171 */
172 public function render_form( $echo = true ) {
173
174 if ( $this->pre_render() ) {
175 return '';
176 }
177
178 if ( ! $this->preset()->sanitize_source() ) {
179 echo 'You are not permitted to submit this form!';
180
181 return '';
182 }
183
184 $this->form_content = Live_Form::instance()
185 ->set_form_id( $this->form_id )
186 ->set_specific_data_for_render( $this->args )
187 ->setup_fields( $this->form_content );
188
189 $form = $this->start_form();
190
191 $form .= wp_nonce_field( Live_Form::instance()->get_nonce_id() );
192
193 $form .= Live_Form::force_render_field( 'hidden-field',
194 array(
195 'field_value' => $this->form_id,
196 'name' => Plugin::instance()->form_handler->form_key,
197 '_static_value' => true,
198 )
199 );
200
201 $form .= Live_Form::force_render_field( 'hidden-field',
202 array(
203 'field_value' => $this->get_form_refer_url(),
204 'name' => Plugin::instance()->form_handler->refer_key,
205 '_static_value' => true,
206 )
207 );
208 $form .= Live_Form::force_render_field( 'hidden-field',
209 array(
210 'field_value' => Live_Form::instance()->post->ID,
211 'name' => Plugin::instance()->form_handler->post_id_key,
212 '_static_value' => true,
213 )
214 );
215 $form .= Live_Form::instance()->maybe_progress_pages();
216
217 $form .= Live_Form::instance()->maybe_start_page();
218
219 foreach ( $this->form_content as $block ) {
220 $form .= render_block( $block );
221 }
222
223 $form .= Live_Form::instance()->maybe_end_page( true );
224 $form .= $this->end_form();
225
226 Live_Form::clear();
227 Preset_Manager::clear();
228
229 if ( $echo ) {
230 echo $form;
231 } else {
232 return $form;
233 }
234
235 }
236
237 public function preset() {
238 Preset_Manager::instance()->set_form_id( $this->form_id );
239
240 return Preset_Manager::instance();
241 }
242
243 }
244
245
246