PluginProbe
JetFormBuilder — Dynamic Blocks Form Builder / 3.5.3
JetFormBuilder — Dynamic Blocks Form Builder v3.5.3
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 / modules / option-query / meta-query.php
meta-query.php
113 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace JFB_Modules\Option_Query;
5
6 use JFB_Modules\Option_Query\Interfaces\Option_Query_It;
7 use JFB_Modules\Option_Query\Traits\Option_Query_Trait;
8
9 // If this file is called directly, abort.
10 if ( ! defined( 'WPINC' ) ) {
11 die;
12 }
13
14 class Meta_Query implements Option_Query_It {
15
16 use Option_Query_Trait;
17
18 public function rep_item_id() {
19 return 'meta_field';
20 }
21
22 public function fetch(): \Generator {
23
24 $key = $this->get_query( 'meta_key' );
25
26 if ( ! $key ) {
27 return;
28 }
29
30 $options = get_post_meta( jet_fb_live()->post->ID, $key, true );
31
32 if ( empty( $options ) ) {
33 return;
34 }
35
36 if ( ! is_array( $options ) ) {
37 $options = array( $options );
38 }
39
40 if ( in_array( 'true', $options, true ) || in_array( 'false', $options, true ) ) {
41 yield from $this->get_checked_options( $options );
42
43 return;
44 }
45
46 $option_values = array_values( $options );
47
48 if ( ! is_array( $option_values[0] ) ) {
49
50 foreach ( $options as $key => $value ) {
51 if ( $this->has_query( 'search' ) &&
52 false === strpos( (string) $value, $this->get_query( 'search' ) )
53 ) {
54 continue;
55 }
56
57 yield array(
58 'value' => is_string( $key ) ? $key : $value,
59 'label' => $value,
60 );
61 }
62
63 return;
64 }
65
66 foreach ( $options as $option ) {
67
68 $values = array_values( $option );
69
70 if (
71 ! isset( $values[0] ) ||
72 (
73 $this->has_query( 'search' ) &&
74 false === strpos( (string) ( $values[1] ?? $values[0] ), $this->get_query( 'search' ) )
75 )
76 ) {
77 continue;
78 }
79
80 yield array(
81 'value' => $values[0],
82 'label' => $values[1] ?? $values[0],
83 );
84
85 }
86 }
87
88 /**
89 * @param $options
90 *
91 * @return \Generator
92 */
93 protected function get_checked_options( $options ): \Generator {
94 foreach ( $options as $label => $checked ) {
95 $checked = filter_var( $checked, defined( 'FILTER_VALIDATE_BOOL' ) ? FILTER_VALIDATE_BOOL : FILTER_VALIDATE_BOOLEAN );
96
97 if ( $this->has_query( 'search' ) &&
98 false === strpos( (string) $label, $this->get_query( 'search' ) )
99 ) {
100 continue;
101 }
102
103 if ( $checked ) {
104 yield array(
105 'value' => $label,
106 'label' => $label,
107 );
108 }
109 }
110 }
111
112 }
113