PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 3.2.4.1
Adminify – White Label, Admin Menu Editor, Login Customizer v3.2.4.1
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
← All changes | Libs/adminify-framework/classes/abstract.class.php +79 -170 4.2.213.2.4.1 View file →
@@ -1,5 +1,6 @@
1 -<?php if ( ! defined( 'ABSPATH' ) ) { die; } // Cannot access directly.
1 +<?php if ( ! defined( 'ABSPATH' ) ) {
2 + die; } // Cannot access directly.
2 3 /**
3 4 *
4 5 * Abstract Class
5 6 *
@@ -4,192 +5,100 @@
4 5 * Abstract Class
5 6 *
6 7 * @since 1.0.0
7 8 * @version 1.0.0
8 - *
9 9 */
10 10 if ( ! class_exists( 'ADMINIFY_Abstract' ) ) {
11 -#[AllowDynamicProperties]
12 -abstract class ADMINIFY_Abstract {
11 + abstract class ADMINIFY_Abstract {
13 12
14 - public $abstract = '';
15 - public $output_css = '';
13 + public $abstract = '';
14 + public $output_css = '';
16 15
17 - public function __construct() {
16 + public function __construct() {
18 17
19 - // Collect output css and typography
20 - if ( ! empty( $this->args['output_css'] ) || ! empty( $this->args['enqueue_webfont'] ) ) {
21 - add_action( 'wp_enqueue_scripts', array( $this, 'collect_output_css_and_typography' ), 10 );
22 - ADMINIFY::$css = apply_filters( "adminify_{$this->unique}_output_css", ADMINIFY::$css, $this );
23 - }
18 + // Collect output css and typography
19 + if ( ! empty( $this->args['output_css'] ) || ! empty( $this->args['enqueue_webfont'] ) ) {
20 + add_action( 'wp_enqueue_scripts', [ $this, 'collect_output_css_and_typography' ], 10 );
21 + ADMINIFY::$css = apply_filters( "adminify_{$this->unique}_output_css", ADMINIFY::$css, $this );
22 + }
23 + }
24 24
25 - }
25 + public function collect_output_css_and_typography() {
26 + $this->recursive_output_css( $this->pre_fields );
27 + }
26 28
27 - public function collect_output_css_and_typography() {
28 - $this->recursive_output_css( $this->pre_fields );
29 - }
29 + public function recursive_output_css( $fields = [], $combine_field = [] ) {
30 + if ( ! empty( $fields ) ) {
31 + foreach ( $fields as $field ) {
32 + $field_id = ( ! empty( $field['id'] ) ) ? $field['id'] : '';
33 + $field_type = ( ! empty( $field['type'] ) ) ? $field['type'] : '';
34 + $field_output = ( ! empty( $field['output'] ) ) ? $field['output'] : '';
35 + $field_check = ( $field_type === 'typography' || $field_output ) ? true : false;
36 + $field_class = 'ADMINIFY_Field_' . $field_type;
30 37
31 - public function recursive_output_css( $fields = array(), $combine_field = array() ) {
38 + if ( $field_type && $field_id ) {
39 + if ( $field_type === 'fieldset' ) {
40 + if ( ! empty( $field['fields'] ) ) {
41 + $this->recursive_output_css( $field['fields'], $field );
42 + }
43 + }
32 44
33 - if ( ! empty( $fields ) ) {
45 + if ( $field_type === 'accordion' ) {
46 + if ( ! empty( $field['accordions'] ) ) {
47 + foreach ( $field['accordions'] as $accordion ) {
48 + $this->recursive_output_css( $accordion['fields'], $field );
49 + }
50 + }
51 + }
34 52
35 - foreach ( $fields as $field ) {
53 + if ( $field_type === 'tabbed' ) {
54 + if ( ! empty( $field['tabs'] ) ) {
55 + foreach ( $field['tabs'] as $accordion ) {
56 + $this->recursive_output_css( $accordion['fields'], $field );
57 + }
58 + }
59 + }
36 60
37 - $field_id = ( ! empty( $field['id'] ) ) ? $field['id'] : '';
38 - $field_type = ( ! empty( $field['type'] ) ) ? $field['type'] : '';
39 - $field_output = ( ! empty( $field['output'] ) ) ? $field['output'] : '';
40 - $field_check = ( $field_type === 'typography' || $field_output ) ? true : false;
41 - $field_class = 'ADMINIFY_Field_' . $field_type;
61 + if ( class_exists( $field_class ) ) {
62 + if ( method_exists( $field_class, 'output' ) || method_exists( $field_class, 'enqueue_google_fonts' ) ) {
63 + $field_value = '';
42 64
43 - if ( $field_type && $field_id ) {
65 + if ( $field_check && ( $this->abstract === 'options' || $this->abstract === 'customize' ) ) {
66 + if ( ! empty( $combine_field ) ) {
67 + $field_value = ( isset( $this->options[ $combine_field['id'] ][ $field_id ] ) ) ? $this->options[ $combine_field['id'] ][ $field_id ] : '';
68 + } else {
69 + $field_value = ( isset( $this->options[ $field_id ] ) ) ? $this->options[ $field_id ] : '';
70 + }
71 + } elseif ( $field_check && ( $this->abstract === 'metabox' && is_singular() || $this->abstract === 'taxonomy' && is_archive() ) ) {
72 + if ( ! empty( $combine_field ) ) {
73 + $meta_value = $this->get_meta_value( $combine_field );
74 + $field_value = ( isset( $meta_value[ $field_id ] ) ) ? $meta_value[ $field_id ] : '';
75 + } else {
76 + $meta_value = $this->get_meta_value( $field );
77 + $field_value = ( isset( $meta_value ) ) ? $meta_value : '';
78 + }
79 + }
44 80
81 + $instance = new $field_class( $field, $field_value, $this->unique, 'wp/enqueue', $this );
45 82
46 - if( $field_type === 'fieldset' ) {
47 - if ( ! empty( $field['fields'] ) ) {
48 - $this->recursive_output_css( $field['fields'], $field );
49 - }
50 - }
83 + // typography enqueue and embed google web fonts
84 + if ( $field_type === 'typography' && $this->args['enqueue_webfont'] && ! empty( $field_value['font-family'] ) ) {
85 + $method = ( ! empty( $this->args['async_webfont'] ) ) ? 'async' : 'enqueue';
51 86
52 - if( $field_type === 'accordion' ) {
53 - if ( ! empty( $field['accordions'] ) ) {
54 - foreach ( $field['accordions'] as $accordion ) {
55 - $this->recursive_output_css( $accordion['fields'], $field );
56 - }
57 - }
58 - }
87 + $instance->enqueue_google_fonts( $method );
88 + }
59 89
60 - if( $field_type === 'tabbed' ) {
61 - if ( ! empty( $field['tabs'] ) ) {
62 - foreach ( $field['tabs'] as $accordion ) {
63 - $this->recursive_output_css( $accordion['fields'], $field );
64 - }
65 - }
66 - }
90 + // output css
91 + if ( $field_output && $this->args['output_css'] ) {
92 + ADMINIFY::$css .= $instance->output();
93 + }
67 94
68 - if ( class_exists( $field_class ) ) {
95 + unset( $instance );
96 + }
97 + }
98 + }
99 + }
100 + }
101 + }
69 102
70 - if ( method_exists( $field_class, 'output' ) || method_exists( $field_class, 'enqueue_google_fonts' ) ) {
71 -
72 - $field_value = '';
73 -
74 - if ( $field_check && ( $this->abstract === 'options' || $this->abstract === 'customize' ) ) {
75 -
76 - if( ! empty( $combine_field ) ) {
77 -
78 - $field_value = ( isset( $this->options[$combine_field['id']][$field_id] ) ) ? $this->options[$combine_field['id']][$field_id] : '';
79 -
80 - } else {
81 -
82 - $field_value = ( isset( $this->options[$field_id] ) ) ? $this->options[$field_id] : '';
83 -
84 - }
85 -
86 - } else if ( $field_check && ( $this->abstract === 'metabox' && is_singular() || $this->abstract === 'taxonomy' && is_archive() ) ) {
87 -
88 - if( ! empty( $combine_field ) ) {
89 -
90 - $meta_value = $this->get_meta_value( $combine_field );
91 - $field_value = ( isset( $meta_value[$field_id] ) ) ? $meta_value[$field_id] : '';
92 -
93 - } else {
94 -
95 - $meta_value = $this->get_meta_value( $field );
96 - $field_value = ( isset( $meta_value ) ) ? $meta_value : '';
97 -
98 - }
99 -
100 - }
101 -
102 - $instance = new $field_class( $field, $field_value, $this->unique, 'wp/enqueue', $this );
103 -
104 - // typography enqueue and embed google web fonts
105 - if ( $field_type === 'typography' && $this->args['enqueue_webfont'] && ! empty( $field_value['font-family'] ) ) {
106 -
107 - $method = ( ! empty( $this->args['async_webfont'] ) ) ? 'async' : 'enqueue';
108 -
109 - $instance->enqueue_google_fonts( $method );
110 -
111 - }
112 -
113 - // output css
114 - if ( $field_output && $this->args['output_css'] ) {
115 - ADMINIFY::$css .= $instance->output();
116 - }
117 -
118 - unset( $instance );
119 -
120 - }
121 -
122 - }
123 -
124 - }
125 -
126 - }
127 -
128 - }
129 -
130 - }
131 -
132 - public function pre_tabs( $sections ) {
133 -
134 - $count = 100;
135 - $result = array();
136 - $parents = array();
137 -
138 - foreach ( $sections as $key => $section ) {
139 - if ( ! empty( $section['parent'] ) ) {
140 - $section['priority'] = ( isset( $section['priority'] ) ) ? $section['priority'] : $count;
141 - $parents[$section['parent']][] = $section;
142 - unset( $sections[$key] );
143 - }
144 - $count++;
145 - }
146 -
147 - foreach ( $sections as $key => $section ) {
148 - $section['priority'] = ( isset( $section['priority'] ) ) ? $section['priority'] : $count;
149 - if ( ! empty( $section['id'] ) && ! empty( $parents[$section['id']] ) ) {
150 - $section['subs'] = wp_list_sort( $parents[$section['id']], array( 'priority' => 'ASC' ), 'ASC', true );
151 - }
152 - $result[] = $section;
153 - $count++;
154 - }
155 -
156 - return wp_list_sort( $result, array( 'priority' => 'ASC' ), 'ASC', true );
157 -
158 - }
159 -
160 - public function pre_sections( $sections ) {
161 -
162 - $result = array();
163 -
164 - foreach ( $this->pre_tabs( $sections ) as $section ) {
165 - if ( ! empty( $section['subs'] ) ) {
166 - foreach ( $section['subs'] as $sub ) {
167 - $sub['ptitle'] = ( ! empty( $section['title'] ) ) ? $section['title'] : '';
168 - $result[] = $sub;
169 - }
170 - }
171 - if ( empty( $section['subs'] ) ) {
172 - $result[] = $section;
173 - }
174 - }
175 -
176 - return $result;
177 - }
178 -
179 - public function pre_fields( $sections ) {
180 -
181 - $result = array();
182 -
183 - foreach ( $sections as $key => $section ) {
184 - if ( ! empty( $section['fields'] ) ) {
185 - foreach ( $section['fields'] as $field ) {
186 - $result[] = $field;
187 - }
188 - }
189 - }
190 -
191 - return $result;
192 - }
193 -
194 -}
103 + }
195 104 }