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