PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.1
JetFormBuilder — Dynamic Blocks Form Builder v3.1.1
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 / live-form.php
jetformbuilder / includes Last commit date
actions 2 years ago addons 2 years ago admin 2 years ago blocks 2 years ago classes 2 years ago db-queries 2 years ago exceptions 2 years ago form-actions 2 years ago form-messages 2 years ago form-patterns 2 years ago form-response 2 years ago generators 2 years ago integrations 2 years ago migrations 2 years ago post-meta 2 years ago presets 2 years ago request 2 years ago shortcodes 2 years ago autoloader.php 2 years ago file-upload.php 2 years ago form-break.php 2 years ago form-handler.php 2 years ago form-manager.php 2 years ago functions.php 2 years ago live-form.php 2 years ago plugin.php 2 years ago post-type.php 2 years ago
live-form.php
223 lines
1 <?php
2
3 namespace Jet_Form_Builder;
4
5 use Jet_Form_Builder\Blocks\Block_Helper;
6 use Jet_Form_Builder\Blocks\Types\Base as Block_Type_Base;
7 use Jet_Form_Builder\Classes\Arguments\Form_Arguments;
8 use Jet_Form_Builder\Classes\Attributes_Trait;
9 use Jet_Form_Builder\Classes\Get_Template_Trait;
10 use Jet_Form_Builder\Classes\Instance_Trait;
11
12 // If this file is called directly, abort.
13 if ( ! defined( 'WPINC' ) ) {
14 die;
15 }
16
17 /**
18 * @method static Live_Form instance()
19 *
20 * Class Live_Form
21 * @package Jet_Form_Builder
22 */
23 class Live_Form {
24
25 use Attributes_Trait;
26 use Get_Template_Trait;
27 use Instance_Trait;
28
29 /**
30 * @var bool|int
31 */
32 public $form_id = false;
33 /** @var Form_Arguments */
34 public $spec_data;
35 public $post;
36 // phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore
37 public $_conditional_blocks = array();
38 public $_repeaters = array();
39 public $blocks = array();
40 // phpcs:enable PSR2.Classes.PropertyDeclaration.Underscore
41
42 /**
43 * @var Form_Break
44 */
45 public $form_break;
46 public $field_names = array();
47
48 /**
49 * Create form instance
50 *
51 * @param [type] $form_id [description]
52 */
53 private function __construct() {
54 $this->post = $this->current_post();
55 $this->spec_data = new Form_Arguments();
56
57 add_filter(
58 'jet-form-builder/setup-blocks',
59 array( $this, 'remove_extra_page_breaks' )
60 );
61 add_filter(
62 'jet-form-builder/after-end-form',
63 array( self::class, 'on_end_render_form' )
64 );
65 }
66
67 public static function on_end_render_form( string $content ): string {
68 self::clear();
69
70 return $content;
71 }
72
73 public static function clear() {
74 remove_filter(
75 'jet-form-builder/setup-blocks',
76 array( self::$instance, 'remove_extra_page_breaks' )
77 );
78 remove_filter(
79 'jet-form-builder/after-end-form',
80 array( self::class, 'on_end_render_form' )
81 );
82
83 self::$instance = null;
84 }
85
86 public function set_form_id( $form_id ) {
87 $this->form_id = $form_id;
88
89 return $this;
90 }
91
92 /**
93 * @param array $incoming_attributes
94 *
95 * @return $this
96 */
97 public function set_specific_data_for_render( $incoming_attributes = array() ) {
98 $this->spec_data
99 ->set_form_id( $this->form_id )
100 ->load( $incoming_attributes );
101
102 return $this;
103 }
104
105 /**
106 * Setup fields prop
107 *
108 * @return array[]
109 */
110 public function setup_fields(): array {
111 $this->blocks = apply_filters(
112 'jet-form-builder/setup-blocks',
113 Block_Helper::get_blocks_by_post( $this->form_id )
114 );
115
116 jet_form_builder()->regexp->set_field_names(
117 Block_Helper::get_form_field_names( $this->blocks )
118 );
119
120 return $this->blocks;
121 }
122
123 public function remove_extra_page_breaks( array $blocks ) {
124 return $this->get_form_break()->set_pages( $blocks );
125 }
126
127 public function maybe_progress_pages() {
128 if ( ! $this->spec_data->enable_progress || 0 === $this->get_form_break()->get_pages() ) {
129 return '';
130 }
131
132 return $this->get_form_break()->render_progress(
133 'default',
134 array(
135 'jet-form-builder-progress-pages--global',
136 )
137 );
138 }
139
140
141 public static function force_render_field( $name, $arguments = array() ) {
142 if ( empty( $name ) ) {
143 return '';
144 }
145 $field = jet_form_builder()->blocks->get_field_by_name( $name );
146
147 if ( ! $field instanceof Block_Type_Base ) {
148 return '';
149 }
150 $arguments['_static_value'] = true;
151
152 $field->set_block_data( $arguments );
153
154 return $field->get_block_renderer();
155 }
156
157
158 /**
159 * Maybe start new page
160 *
161 * @param bool $force_first
162 *
163 * @return false|string|void
164 */
165 public function maybe_start_page( $force_first = false ) {
166 return $this->get_form_break()->maybe_start_page( $force_first );
167 }
168
169 /**
170 * Maybe start new page
171 *
172 * @param $is_last
173 * @param $field
174 *
175 * @return false|string|void [type] [description]
176 */
177 public function maybe_end_page( $is_last = false, $field = false ) {
178 return $this->get_form_break()->maybe_end_page( $is_last, $field );
179 }
180
181 /**
182 * @param string $name
183 *
184 * @return Form_Break
185 */
186 public function get_form_break( $name = '' ) {
187 if ( ! $name && ! $this->form_break ) {
188 $this->form_break = new Form_Break();
189 }
190 if ( $name && ! $this->isset_form_break( $name ) ) {
191 $this->_conditional_blocks[ $name ] = array( 'break' => new Form_Break() );
192 }
193
194 return $name ? $this->_conditional_blocks[ $name ]['break'] : $this->form_break;
195 }
196
197 public function isset_form_break( $name ) {
198 return isset( $this->_conditional_blocks[ $name ] );
199 }
200
201 public function get_repeater( $name ) {
202 return $this->_repeaters[ $name ] ?? array();
203 }
204
205 public function set_repeater( $name, $attrs ) {
206 $this->_repeaters[ $name ] = array_merge( $this->get_repeater( $name ), $attrs );
207 }
208
209 private function current_post() {
210 global $post;
211
212 if ( wp_doing_ajax() && empty( $post->ID ) ) {
213 $url = wp_get_referer();
214 $post_id = url_to_postid( $url );
215
216 return get_post( $post_id );
217 } else {
218 return $post;
219 }
220 }
221
222 }
223