PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 2.1.6
JetFormBuilder — Dynamic Blocks Form Builder v2.1.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 / 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
149 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 )
47 );
48 }
49
50 public function get_values_fields( $fields, Parser_Context $context ) {
51 $response = array();
52 $this->get_values_fields_recursive( $response, $fields, $context );
53
54 return $response;
55 }
56
57 public function get_values_fields_recursive( &$output, $fields, Parser_Context $context ) {
58 foreach ( $fields as $field ) {
59 try {
60 $context->set_field( $field );
61
62 $this->get_value_from_field( $output, $context );
63
64 $context->save_to_request();
65
66 } catch ( Parse_Exception $exception ) {
67 switch ( $exception->getMessage() ) {
68
69 case self::IS_CONDITIONAL:
70 $this->get_values_fields_recursive(
71 $output,
72 $exception->get_inner(),
73 $context->set_inside_conditional( true )
74 );
75 break;
76
77 case self::NOT_FIELD_HAS_INNER:
78 $this->get_values_fields_recursive(
79 $output,
80 $exception->get_inner(),
81 $context
82 );
83 break;
84 }
85 }
86 }
87 }
88
89
90 /**
91 * @param $output
92 * @param Parser_Context $context
93 */
94 public function get_value_from_field( &$output, Parser_Context $context ) {
95 try {
96 $parser = $context->get_parser();
97 } catch ( Repository_Exception $exception ) {
98 $output[ $context->get_name() ] = $context->get_value();
99
100 return;
101 }
102
103 try {
104 $output[ $context->get_name() ] = $parser->get_parsed_value( $context );
105 } catch ( Parse_Exception $exception ) {
106 $output = array_merge( $output, $exception->get_inner() );
107 return;
108
109 } catch ( Exclude_Field_Exception $exception ) {
110 return;
111 }
112 }
113
114 public function save_to_request( $name, $type, $settings ) {
115 jet_fb_request_handler()->set_request_type(
116 array(
117 $name => $type,
118 )
119 );
120 jet_fb_request_handler()->set_request_attrs(
121 array(
122 $name => $settings,
123 )
124 );
125 }
126
127 /**
128 * @param $block_name
129 *
130 * @return bool
131 */
132 public function isset_parser( $block_name ): bool {
133 $type = Block_Helper::delete_namespace( $block_name );
134
135 return $this->rep_isset_item( $type );
136 }
137
138 /**
139 * @param $slug
140 *
141 * @return mixed
142 * @throws Repository_Exception
143 */
144 public function get_parser( $slug ): Field_Data_Parser {
145 return $this->rep_clone_item( $slug );
146 }
147
148 }
149