PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 1.1.5
JetFormBuilder — Dynamic Blocks Form Builder v1.1.5
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 5 years ago field-data-parser.php 5 years ago parser-manager.php 5 years ago request-handler.php 5 years ago
parser-manager.php
112 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( $fields, $request ) {
40 $response = array();
41
42 foreach ( $fields as $field ) {
43 $settings = $field['attrs'];
44 $name = isset( $settings['name'] ) ? $settings['name'] : 'field_name';
45
46 $response[ $name ] = $this->get_parsed_value( $field, $request, $name );
47 }
48
49 return $response;
50 }
51
52 public function get_parsed_value( $field, $request, $name ) {
53
54 if ( ! $this->is_field_visible( $field['attrs'] ) ) {
55 return null;
56 }
57 $value = isset( $request[ $name ] ) ? $request[ $name ] : '';
58 $type = Plugin::instance()->form->field_name( $field['blockName'] );
59
60 $parser = $this->get_parser( $type );
61
62 if ( $parser instanceof Field_Data_Parser ) {
63 $parser->init( $value, $field );
64
65 return $this->get_parser_response( $parser );
66 }
67
68 return $value;
69 }
70
71 private function get_parser( $type ) {
72 return isset( $this->_parsers[ $type ] ) ? clone $this->_parsers[ $type ] : false;
73 }
74
75 private function get_parser_response( $parser ) {
76 return $parser->response();
77 }
78
79 /**
80 * Returns true if field is visible
81 *
82 * @param array $field [description]
83 *
84 * @return boolean [description]
85 */
86 public function is_field_visible( $field = array() ) {
87
88 // For backward compatibility and hidden fields
89 if ( empty( $field['visibility'] ) ) {
90 return true;
91 }
92
93 // If is visible for all - show field
94 if ( 'all' === $field['visibility'] ) {
95 return true;
96 }
97
98 // If is visible for logged in users and user is logged in - show field
99 if ( 'logged_id' === $field['visibility'] && is_user_logged_in() ) {
100 return true;
101 }
102
103 // If is visible for not logged in users and user is not logged in - show field
104 if ( 'not_logged_in' === $field['visibility'] && ! is_user_logged_in() ) {
105 return true;
106 }
107
108 return false;
109
110 }
111
112 }