PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.2.2
Adminify – White Label, Admin Menu Editor, Login Customizer v4.2.2
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
adminify / Libs / adminify-framework / classes / abstract.class.php

abstract.class.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.2.2, at Libs/adminify-framework/classes/abstract.class.php

196 lines 5.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php if ( ! defined( 'ABSPATH' ) ) { die; } // Cannot access directly.
2 /**
3 *
4 * Abstract Class
5 *
6 * @since 1.0.0
7 * @version 1.0.0
8 *
9 */
10 if ( ! class_exists( 'ADMINIFY_Abstract' ) ) {
11 #[AllowDynamicProperties]
12 abstract class ADMINIFY_Abstract {
13
14 public $abstract = '';
15 public $output_css = '';
16
17 public function __construct() {
18
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 }
24
25 }
26
27 public function collect_output_css_and_typography() {
28 $this->recursive_output_css( $this->pre_fields );
29 }
30
31 public function recursive_output_css( $fields = array(), $combine_field = array() ) {
32
33 if ( ! empty( $fields ) ) {
34
35 foreach ( $fields as $field ) {
36
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;
42
43 if ( $field_type && $field_id ) {
44
45
46 if( $field_type === 'fieldset' ) {
47 if ( ! empty( $field['fields'] ) ) {
48 $this->recursive_output_css( $field['fields'], $field );
49 }
50 }
51
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 }
59
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 }
67
68 if ( class_exists( $field_class ) ) {
69
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 }
195 }
196