PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.2.4
JetFormBuilder — Dynamic Blocks Form Builder v1.2.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
fields 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
116 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 class Parser_Manager {
12
13 private $_parsers;
14 private $response;
15
16 use Instance_Trait;
17
18 private function __construct() {
19 $this->register_request_parsers();
20 }
21
22 private function register_request_parsers() {
23 $parsers = array(
24 new Fields\Date_Field_Parser(),
25 new Fields\Repeater_Field_Parser(),
26 new Fields\Wysiwyg_Field_Parser(),
27 new Fields\Text_Field_Parser(),
28 new Fields\Repeater_Field_Parser(),
29 new Fields\Media_Field_Parser(),
30 );
31
32 foreach ( $parsers as $parser ) {
33 $this->_parsers[ $parser->type() ] = $parser;
34 }
35
36 $this->_parsers = apply_filters( 'jet-form-builder/parsers-request/register', $this->_parsers );
37 }
38
39 public function get_values_fields( $request_handler ) {
40 $response = array();
41
42 $fields = $request_handler->_fields;
43 $request = $request_handler->_request_values;
44
45 foreach ( $fields as $field ) {
46 $settings = $field['attrs'];
47 $name = isset( $settings['name'] ) ? $settings['name'] : 'field_name';
48
49 $response[ $name ] = $this->get_parsed_value( $field, $request, $name, $request_handler );
50 }
51
52 return $response;
53 }
54
55 public function get_parsed_value( $field, $request, $name, $request_handler = null ) {
56
57 if ( ! $this->is_field_visible( $field['attrs'] ) ) {
58 return null;
59 }
60 $value = isset( $request[ $name ] ) ? $request[ $name ] : '';
61 $type = Plugin::instance()->form->field_name( $field['blockName'] );
62
63 $parser = $this->get_parser( $type );
64
65 if ( $parser instanceof Field_Data_Parser ) {
66 $parser->init( $value, $field );
67 $parser->set_request_handler( $request_handler );
68
69 return $this->get_parser_response( $parser );
70 }
71
72 return $value;
73 }
74
75 private function get_parser( $type ) {
76 return isset( $this->_parsers[ $type ] ) ? clone $this->_parsers[ $type ] : false;
77 }
78
79 private function get_parser_response( $parser ) {
80 return $parser->response();
81 }
82
83 /**
84 * Returns true if field is visible
85 *
86 * @param array $field [description]
87 *
88 * @return boolean [description]
89 */
90 public function is_field_visible( $field = array() ) {
91
92 // For backward compatibility and hidden fields
93 if ( empty( $field['visibility'] ) ) {
94 return true;
95 }
96
97 // If is visible for all - show field
98 if ( 'all' === $field['visibility'] ) {
99 return true;
100 }
101
102 // If is visible for logged in users and user is logged in - show field
103 if ( 'logged_id' === $field['visibility'] && is_user_logged_in() ) {
104 return true;
105 }
106
107 // If is visible for not logged in users and user is not logged in - show field
108 if ( 'not_logged_in' === $field['visibility'] && ! is_user_logged_in() ) {
109 return true;
110 }
111
112 return false;
113
114 }
115
116 }