PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.6
JetFormBuilder — Dynamic Blocks Form Builder v1.2.6
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 conditional-block-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 hidden-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
245 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\Compatibility\Jet_Style_Manager;
9 use Jet_Form_Builder\File_Upload;
10 use Jet_Form_Builder\Live_Form;
11 use Jet_Form_Builder\Plugin;
12 use Jet_Form_Builder\Presets\Preset_Manager;
13 use JET_SM\Gutenberg\Style_Manager;
14
15 // If this file is called directly, abort.
16
17 if ( ! defined( 'WPINC' ) ) {
18 die;
19 }
20
21 /**
22 * Form builder class
23 */
24 class Form_Builder {
25
26 use Attributes_Trait;
27 use Get_Template_Trait;
28
29 public $form_id;
30 public $post;
31 public $args = array();
32
33 private $form_content;
34
35 /**
36 * Constructor for the class
37 *
38 * @param null $form_id
39 * @param bool $post
40 * @param array $args
41 */
42 function __construct( $form_id = null, $post = false, $args = array() ) {
43
44 if ( ! $form_id ) {
45 return;
46 }
47 $this->form_id = $form_id;
48 $this->set_form_args( $args );
49
50 if ( empty( $post ) ) {
51 $this->post = get_post();
52 }
53
54 $this->form_content = Plugin::instance()->form->get_form_content( $form_id );
55 }
56
57 /**
58 * @param $arguments
59 */
60 public function set_form_args( $arguments ) {
61 $this->args = array_intersect_key( $arguments, Plugin::instance()->post_type->get_default_args() );
62
63 return $this;
64 }
65
66
67 /**
68 * Returns form action url
69 *
70 * @return [type] [description]
71 */
72 public function get_form_action_url() {
73
74 $action = add_query_arg(
75 array(
76 Plugin::instance()->form_handler->hook_key => Plugin::instance()->form_handler->hook_val,
77 ),
78 home_url( '/' )
79 );
80
81 return apply_filters( 'jet-form-builder/form-action-url', $action, $this );
82
83 }
84
85 /**
86 * Returns form refer url
87 *
88 * @return [type] [description]
89 */
90 public function get_form_refer_url() {
91
92 global $wp;
93
94 $refer = home_url( $wp->request );
95
96 if ( ! empty( $_SERVER['QUERY_STRING'] ) ) {
97 $refer = trailingslashit( $refer ) . '?' . $_SERVER['QUERY_STRING'];
98 }
99
100 return apply_filters( 'jet-form-builder/form-refer-url', $refer, $this );
101
102 }
103
104 /**
105 * @return mixed|void
106 */
107 public function pre_render() {
108 return apply_filters( 'jet-form-builder/pre-render/' . $this->form_id, false );
109 }
110
111
112 /**
113 * Open form wrapper
114 *
115 * @return string [type] [description]
116 */
117 public function start_form() {
118
119 $start_form = apply_filters( 'jet-form-builder/before-start-form', '', $this );
120
121 $this->add_attribute( 'class', 'jet-form-builder' );
122 $this->add_attribute( 'class', 'layout-' . Live_Form::instance()->spec_data->fields_layout );
123 $this->add_attribute( 'class', 'submit-type-' . Live_Form::instance()->spec_data->submit_type );
124 $this->add_attribute( 'action', $this->get_form_action_url() );
125 $this->add_attribute( 'method', 'POST' );
126 $this->add_attribute( 'data-form-id', $this->form_id );
127 $this->add_attribute( 'data-layout', Live_Form::instance()->spec_data->fields_layout );
128
129 ob_start();
130 include $this->get_global_template( 'common/start-form.php' );
131 $start_form .= ob_get_clean();
132
133 $start_form .= apply_filters( 'jet-form-builder/after-start-form', '', $this );
134
135 return $start_form;
136 }
137
138 /**
139 * Close form wrapper
140 *
141 * @return string [type] [description]
142 */
143 public function end_form() {
144
145 $end_form = apply_filters( 'jet-form-builder/before-end-form', '', $this );
146 $form_id = $this->form_id;
147
148 ob_start();
149
150 if ( Plugin::instance()->captcha ) {
151 Plugin::instance()->captcha->render( $this->form_id );
152 }
153
154 include $this->get_global_template( 'common/end-form.php' );
155
156 Plugin::instance()->blocks->enqueue_frontend_assets();
157 File_Upload::instance()->enqueue_scripts();
158
159 $end_form .= ob_get_clean();
160
161 $end_form .= apply_filters( 'jet-form-builder/after-end-form', '', $this );
162
163 return $end_form;
164 }
165
166
167 /**
168 * Render from HTML
169 *
170 * @param bool $echo
171 *
172 * @return false|string [type] [description]
173 */
174 public function render_form( $echo = true ) {
175
176 if ( $this->pre_render() ) {
177 return '';
178 }
179
180 if ( ! $this->preset()->sanitize_source() ) {
181 echo 'You are not permitted to submit this form!';
182
183 return '';
184 }
185
186 $this->form_content = Live_Form::instance()
187 ->set_form_id( $this->form_id )
188 ->set_specific_data_for_render( $this->args )
189 ->setup_fields( $this->form_content );
190
191 $form = $this->start_form();
192
193 $form .= wp_nonce_field( Live_Form::instance()->get_nonce_id() );
194
195 $form .= Live_Form::force_render_field( 'hidden-field',
196 array(
197 'field_value' => $this->form_id,
198 'name' => Plugin::instance()->form_handler->form_key,
199 )
200 );
201
202 $form .= Live_Form::force_render_field( 'hidden-field',
203 array(
204 'field_value' => $this->get_form_refer_url(),
205 'name' => Plugin::instance()->form_handler->refer_key,
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 )
213 );
214 $form .= Live_Form::instance()->maybe_progress_pages();
215
216 $form .= Live_Form::instance()->maybe_start_page();
217
218 foreach ( $this->form_content as $block ) {
219 $form .= render_block( $block );
220 }
221
222 $form .= Live_Form::instance()->maybe_end_page( true );
223 $form .= $this->end_form();
224
225 Live_Form::clear();
226 Preset_Manager::clear();
227
228 if ( $echo ) {
229 echo $form;
230 } else {
231 return $form;
232 }
233
234 }
235
236 public function preset() {
237 Preset_Manager::instance()->set_form_id( $this->form_id );
238
239 return Preset_Manager::instance();
240 }
241
242 }
243
244
245