PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 2.1.4
JetFormBuilder — Dynamic Blocks Form Builder v2.1.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 / request / parser-manager.php
jetformbuilder / includes / request Last commit date
exceptions 3 years ago fields 3 years ago field-data-parser.php 3 years ago file-uploader.php 3 years ago form-request-router.php 3 years ago parser-context.php 3 years ago parser-manager.php 3 years ago request-handler.php 3 years ago request-router.php 3 years ago
parser-manager.php
150 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Request;
5
6 use Jet_Form_Builder\Blocks\Block_Helper;
7 use Jet_Form_Builder\Classes\Instance_Trait;
8 use Jet_Form_Builder\Classes\Repository\Repository_Pattern_Trait;
9 use Jet_Form_Builder\Exceptions\Parse_Exception;
10 use Jet_Form_Builder\Exceptions\Repository_Exception;
11 use Jet_Form_Builder\Request\Exceptions\Exclude_Field_Exception;
12 use Jet_Form_Builder\Request\Fields;
13
14 /**
15 * @method static Parser_Manager instance()
16 *
17 * Class Parser_Manager
18 * @package Jet_Form_Builder\Request
19 */
20 class Parser_Manager {
21
22 const EMPTY_BLOCK_ERROR = '0';
23 const NOT_FIELD_HAS_INNER = '1';
24 const FIELD_HAS_INNER = '2';
25 const IS_CONDITIONAL = '3';
26
27 use Instance_Trait;
28 use Repository_Pattern_Trait;
29
30 private function __construct() {
31 $this->rep_install();
32 }
33
34 public function rep_instances(): array {
35 return apply_filters(
36 'jet-form-builder/parsers-request/register',
37 array(
38 new Fields\Date_Field_Parser(),
39 new Fields\Repeater_Field_Parser(),
40 new Fields\Wysiwyg_Field_Parser(),
41 new Fields\Text_Field_Parser(),
42 new Fields\Repeater_Field_Parser(),
43 new Fields\Media_Field_Parser(),
44 new Fields\Datetime_Field_Parser(),
45 new Fields\Hidden_Field_Parser(),
46 new Fields\Map_Field_Parser(),
47 )
48 );
49 }
50
51 public function get_values_fields( $fields, Parser_Context $context ) {
52 $response = array();
53 $this->get_values_fields_recursive( $response, $fields, $context );
54
55 return $response;
56 }
57
58 public function get_values_fields_recursive( &$output, $fields, Parser_Context $context ) {
59 foreach ( $fields as $field ) {
60 try {
61 $context->set_field( $field );
62
63 $this->get_value_from_field( $output, $context );
64
65 $context->save_to_request();
66
67 } catch ( Parse_Exception $exception ) {
68 switch ( $exception->getMessage() ) {
69
70 case self::IS_CONDITIONAL:
71 $this->get_values_fields_recursive(
72 $output,
73 $exception->get_inner(),
74 $context->set_inside_conditional( true )
75 );
76 break;
77
78 case self::NOT_FIELD_HAS_INNER:
79 $this->get_values_fields_recursive(
80 $output,
81 $exception->get_inner(),
82 $context
83 );
84 break;
85 }
86 }
87 }
88 }
89
90
91 /**
92 * @param $output
93 * @param Parser_Context $context
94 */
95 public function get_value_from_field( &$output, Parser_Context $context ) {
96 try {
97 $parser = $context->get_parser();
98 } catch ( Repository_Exception $exception ) {
99 $output[ $context->get_name() ] = $context->get_value();
100
101 return;
102 }
103
104 try {
105 $output[ $context->get_name() ] = $parser->get_parsed_value( $context );
106 } catch ( Parse_Exception $exception ) {
107 $output = array_merge( $output, $exception->get_inner() );
108 return;
109
110 } catch ( Exclude_Field_Exception $exception ) {
111 return;
112 }
113 }
114
115 public function save_to_request( $name, $type, $settings ) {
116 jet_fb_request_handler()->set_request_type(
117 array(
118 $name => $type,
119 )
120 );
121 jet_fb_request_handler()->set_request_attrs(
122 array(
123 $name => $settings,
124 )
125 );
126 }
127
128 /**
129 * @param $block_name
130 *
131 * @return bool
132 */
133 public function isset_parser( $block_name ): bool {
134 $type = Block_Helper::delete_namespace( $block_name );
135
136 return $this->rep_isset_item( $type );
137 }
138
139 /**
140 * @param $slug
141 *
142 * @return mixed
143 * @throws Repository_Exception
144 */
145 public function get_parser( $slug ): Field_Data_Parser {
146 return $this->rep_clone_item( $slug );
147 }
148
149 }
150