PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 1.1.1
JetFormBuilder — Dynamic Blocks Form Builder v1.1.1
3.6.5.2 3.6.5.1 3.6.5 3.6.4.2 3.6.4.1 3.6.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 All 130 releases
jetformbuilder / includes / request / parser-manager.php

parser-manager.php in JetFormBuilder — Dynamic Blocks Form Builder 1.1.1, at includes/request/parser-manager.php

112 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }