PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.3.1
JetFormBuilder — Dynamic Blocks Form Builder v1.3.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 / request / parser-manager.php
jetformbuilder / includes / request Last commit date
fields 4 years ago current-parsers.php 4 years ago field-data-parser.php 4 years ago parser-manager.php 4 years ago request-handler.php 4 years ago
parser-manager.php
141 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Request;
5
6
7 use Jet_Form_Builder\Classes\Instance_Trait;
8 use Jet_Form_Builder\Plugin;
9 use Jet_Form_Builder\Request\Fields;
10
11 /**
12 * @method static Parser_Manager instance()
13 *
14 * Class Parser_Manager
15 * @package Jet_Form_Builder\Request
16 */
17 class Parser_Manager {
18
19 private $_parsers;
20 private $response;
21 public $inside_conditional = false;
22
23 use Instance_Trait;
24
25 private function __construct() {
26 $this->register_request_parsers();
27 }
28
29 private function register_request_parsers() {
30 $parsers = apply_filters( 'jet-form-builder/parsers-request/register', array(
31 new Fields\Date_Field_Parser(),
32 new Fields\Repeater_Field_Parser(),
33 new Fields\Wysiwyg_Field_Parser(),
34 new Fields\Text_Field_Parser(),
35 new Fields\Repeater_Field_Parser(),
36 new Fields\Media_Field_Parser(),
37 new Fields\Datetime_Field_Parser()
38 ) );
39
40 foreach ( $parsers as $parser ) {
41 $this->_parsers[ $parser->type() ] = $parser;
42 }
43 }
44
45 public function get_values_fields( $fields, $request, $inside_conditional = false ) {
46 $response = array();
47
48 foreach ( $fields as $field ) {
49 if ( empty( $field['blockName'] ) ) {
50 continue;
51 }
52 if ( ! empty( $field['innerBlocks'] ) && ! $this->isset_parser_by_block_name( $field['blockName'] ) ) {
53 if ( strpos( $field['blockName'], 'conditional-block' ) ) {
54 $inside_conditional = true;
55 }
56
57 $response = array_merge( $response, $this->get_values_fields(
58 $field['innerBlocks'],
59 $request,
60 $inside_conditional
61 ) );
62
63 continue;
64 }
65
66 $settings = $field['attrs'];
67 $name = isset( $settings['name'] ) ? $settings['name'] : 'field_name';
68
69 $response[ $name ] = $this->get_parsed_value( $field, $request, $name, $inside_conditional );
70 }
71
72 return $response;
73 }
74
75 public function get_parsed_value( $field, $request, $name, $inside_conditional ) {
76
77 if ( ! $this->is_field_visible( $field['attrs'] ) ) {
78 return null;
79 }
80 $value = isset( $request[ $name ] ) ? $request[ $name ] : '';
81 $parser = $this->get_parser_by_block_name( $field['blockName'] );
82
83 if ( $parser instanceof Field_Data_Parser ) {
84 $parser->init( $value, $field, $inside_conditional );
85
86 return $parser->response();
87 }
88
89 return $value;
90 }
91
92 private function isset_parser_by_block_name( $block_name ) {
93 $type = Plugin::instance()->form->field_name( $block_name );
94
95 return isset( $this->_parsers[ $type ] );
96 }
97
98 private function get_parser_by_block_name( $block_name ) {
99 $type = Plugin::instance()->form->field_name( $block_name );
100
101 return $this->get_parser( $type );
102 }
103
104 private function get_parser( $type ) {
105 return isset( $this->_parsers[ $type ] ) ? clone $this->_parsers[ $type ] : false;
106 }
107
108 /**
109 * Returns true if field is visible
110 *
111 * @param array $field [description]
112 *
113 * @return boolean [description]
114 */
115 public function is_field_visible( $field = array() ) {
116
117 // For backward compatibility and hidden fields
118 if ( empty( $field['visibility'] ) ) {
119 return true;
120 }
121
122 // If is visible for all - show field
123 if ( 'all' === $field['visibility'] ) {
124 return true;
125 }
126
127 // If is visible for logged in users and user is logged in - show field
128 if ( 'logged_id' === $field['visibility'] && is_user_logged_in() ) {
129 return true;
130 }
131
132 // If is visible for not logged in users and user is not logged in - show field
133 if ( 'not_logged_in' === $field['visibility'] && ! is_user_logged_in() ) {
134 return true;
135 }
136
137 return false;
138
139 }
140
141 }