PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.3
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.3
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 / inc / Modules / AdminColumns / AdminColumnsData.php

AdminColumnsData.php in Adminify – White Label, Admin Menu Editor, Login Customizer 1.0.3, at inc/Modules/AdminColumns/AdminColumnsData.php

460 lines 10.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 // define all helper functions to create list table
4 function jltwp_adminify_admin_columns_create_post_table($screen_id)
5 {
6 require_once(ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php');
7
8 return new WP_Posts_List_Table(['screen' => $screen_id]);
9 }
10
11 function jltwp_adminify_admin_columns_create_user_table($screen_id)
12 {
13 require_once(ABSPATH . 'wp-admin/includes/class-wp-users-list-table.php');
14
15 return new WP_Users_List_Table(['screen' => $screen_id]);
16 }
17
18 function jltwp_adminify_admin_columns_create_comment_table($screen_id)
19 {
20 require_once(ABSPATH . 'wp-admin/includes/class-wp-comments-list-table.php');
21
22 $table = new WP_Comments_List_Table(['screen' => $screen_id]);
23
24 // Since 4.4 the `floated_admin_avatar` filter is added in the constructor of the `\WP_Comments_List_Table` class.
25 remove_filter('comment_author', [$table, 'floated_admin_avatar']);
26
27 return $table;
28 }
29
30 function jltwp_adminify_admin_columns_create_media_table($screen_id)
31 {
32 require_once(ABSPATH . 'wp-admin/includes/class-wp-media-list-table.php');
33
34 return new WP_Media_List_Table(['screen' => $screen_id]);
35 }
36
37 function jltwp_adminify_admin_columns_create_taxonomy_table($screen_id)
38 {
39 require_once(ABSPATH . 'wp-admin/includes/class-wp-terms-list-table.php');
40
41 return new WP_Terms_List_Table(['screen' => $screen_id]);
42 }
43 function jltwp_adminify_admin_columns_create_network_user_table($screen_id)
44 {
45 require_once(ABSPATH . 'wp-admin/includes/class-wp-ms-users-list-table.php');
46
47 return new WP_MS_Users_List_Table(['screen' => $screen_id]);
48 }
49
50
51
52 // get the columns list of any post or users, comments etc.
53 function jltwp_adminify_admin_columns_data($type)
54 {
55 // $data_type_for_fetching_column can be post, page, product, user, shop_order, shop_coupon, 'edit-comments', 'users', 'upload'
56
57 $data_type_for_fetching_column = $type;
58
59 $builtin_non_posttype_data = ['users', 'edit-comments', 'upload', 'edit-category', 'edit-post_tag'];
60 $table = '';
61
62
63 if (in_array($data_type_for_fetching_column, $builtin_non_posttype_data)) {
64 switch ($data_type_for_fetching_column) {
65 case 'users':
66 $table = jltwp_adminify_admin_columns_create_user_table($data_type_for_fetching_column);
67 break;
68 case 'edit-comments':
69 $table = jltwp_adminify_admin_columns_create_comment_table($data_type_for_fetching_column);
70 break;
71 case 'upload':
72 $table = jltwp_adminify_admin_columns_create_media_table($data_type_for_fetching_column);
73 break;
74 case 'edit-category':
75 case 'edit-post_tag':
76 $table = jltwp_adminify_admin_columns_create_taxonomy_table($data_type_for_fetching_column);
77 break;
78 }
79 } else {
80 if (!empty($data_type_for_fetching_column)) {
81 $table = jltwp_adminify_admin_columns_create_post_table($data_type_for_fetching_column);
82 }
83 }
84
85 // handle woocommerce
86 if ( function_exists('WC') ) {
87
88 switch ($data_type_for_fetching_column) {
89 case 'product':
90 include_once dirname(WC_PLUGIN_FILE) . '/includes/admin/list-tables/class-wc-admin-list-table-products.php';
91 new WC_Admin_List_Table_Products();
92 break;
93 case 'shop_order':
94 include_once dirname(WC_PLUGIN_FILE) . '/includes/admin/list-tables/class-wc-admin-list-table-orders.php';
95 new WC_Admin_List_Table_Orders();
96 break;
97 case 'shop_coupon':
98 include_once dirname(WC_PLUGIN_FILE) . '/includes/admin/list-tables/class-wc-admin-list-table-coupons.php';
99 new WC_Admin_List_Table_Coupons();
100 break;
101 }
102 }
103
104 $col_names = [];
105
106 if ( $table instanceof WP_List_Table ) {
107 $col_names = $table->get_columns();
108
109 if ( array_key_exists('cb', $col_names) ) {
110 unset($col_names['cb']);
111 }
112
113 }
114
115 return (array) $col_names;
116
117 }
118
119 // add_action('current_screen', 'jltwp_adminify_admin_columns_data', 99);
120
121
122 function adminify_post_types() {
123
124 $sections = [];
125
126 $update_column_settings = get_option('_wpadminify_admin_columns_settings');
127
128 foreach ( $update_column_settings as $p => $post_type ) {
129
130 if ( $post_type == 'attachment' ) continue;
131
132 $defaults = [];
133
134 foreach ( $post_type as $column => $column_label ) {
135
136 $column_meta = adminify_get_column_meta( $post_type, $column, $column_label );
137
138 $defaults[] = array(
139 'type' => $column,
140 'label' => $column_label,
141 'width' => $column_meta['width']
142 );
143
144 }
145
146 $sections[] = array(
147 'title' => WPAdminify\Inc\Utils::id_to_string($p),
148 'fields' => array(
149 array(
150 'id' => 'admin-columns-group-' . $p,
151 'type' => 'group',
152 'title' => '',
153 'fields' => array(
154
155 'field_type' => array(
156 'id' => 'field_type',
157 'type' => 'select',
158 'title' => 'Column Type',
159 'chosen' => true,
160 'placeholder' => 'Select Column Type',
161 'options' => array(
162 'title' => 'Title',
163 'author' => 'Author',
164 'categories' => 'Categories',
165 'tags' => 'Tags',
166 'comments' => 'Comments',
167 'date' => 'Date',
168 'id' => 'ID',
169 ),
170 ),
171
172 'label' => array(
173 'id' => 'label',
174 'type' => 'text',
175 'title' => 'Label',
176 ),
177
178 'width' => array(
179 'id' => 'width',
180 'type' => 'slider',
181 'title' => 'Width',
182 'unit' => '%'
183 ),
184
185 ),
186
187 'default' => $defaults
188
189 )
190 )
191 );
192
193 }
194
195 return $sections;
196
197 }
198
199
200
201 /*
202 * Get registered post_types
203 */
204 function adminify__get_post_types() {
205
206 $post_types = [];
207
208 foreach ( WPAdminify\Inc\Utils::get_post_types() as $post_type ) {
209
210 if ( $post_type->name == 'attachment' ) continue;
211
212 $post_types[ $post_type->name ] = $post_type->labels->singular_name;
213
214 }
215
216 return $post_types;
217
218 }
219
220 /*
221 * Get registered post_types
222 */
223 function adminify__get_taxonomies() {
224
225 $taxonomies = [];
226
227 foreach ( WPAdminify\Inc\Utils::get_taxonomies() as $taxonomy ) {
228 $taxonomies[ $taxonomy->name ] = $taxonomy->labels->singular_name;
229 }
230
231 return $taxonomies;
232
233 }
234
235 /*
236 * Get both visible & non visible columns of a specific post_type
237 */
238 function adminify__get_post_type_all_columns( $post_type ) {
239
240 return jltwp_adminify_admin_columns_data( $post_type ); // @todo implement the function
241
242 }
243
244 /*
245 * Get both visible & non visible columns of a specific taxonomy
246 */
247 function adminify__get_taxonomy_all_columns( $taxonomy ) {
248
249 return jltwp_adminify_admin_columns_data( $taxonomy ); // @todo implement the function
250
251 }
252
253 /*
254 * Get visible columns of all post_types
255 */
256 function adminify__get_post_types_columns() {
257
258 $post_types = adminify__get_post_types();
259
260 $post_types_columns = [];
261
262 foreach ( $post_types as $post_type => $post_type_title ) {
263
264 $post_types_columns[] = [
265 'name' => $post_type,
266 'title' => $post_type_title,
267 'columns' => adminify__get_post_type_all_columns( $post_type ),
268 'display_columns' => adminify_prepare_post_type_column_meta( $post_type ),
269 'fields' => adminify_get_post_type_fields( $post_type )
270 ];
271
272 }
273
274 return $post_types_columns;
275
276 }
277
278 /*
279 * Get visible columns of all taxonomies
280 */
281 function adminify__get_taxonomies_columns() {
282
283 $taxonomies = adminify__get_taxonomies();
284
285 $taxonomies_columns = [];
286
287 foreach ( $taxonomies as $taxonomy => $taxonomy_title ) {
288
289 $taxonomies_columns[] = [
290 'name' => $taxonomy,
291 'title' => $taxonomy_title,
292 'columns' => adminify__get_taxonomy_all_columns( 'edit-' . $taxonomy ),
293 'display_columns' => adminify_prepare_taxonomy_column_meta( $taxonomy ),
294 'fields' => adminify_get_taxonomy_fields( $taxonomy )
295 ];
296
297 }
298
299 return $taxonomies_columns;
300
301 }
302
303 /*
304 * Get specific column meta data
305 */
306 function adminify_get_column_meta( $post_type, $column, $column_label ) {
307
308 $column_default_meta = [
309 'label' => $column_label,
310 'width' => [
311 'value' => 'auto',
312 'unit' => '%'
313 ],
314 'fields' => ['type', 'label', 'width']
315 ];
316
317 /*
318 * You can extend the fields based on post type and column
319 * Make sure you have added the new field type in this function: adminify_get_post_type_fields
320 */
321
322 // if ( $post_type == 'page' && $column == 'taxonomy-folder' ) {
323 // $column_default_meta['fields'][] = 'new';
324 // }
325
326 $data = (array) get_option( '_adminify_admin_columns_meta_data', [] );
327
328 $column_meta = [];
329
330 if ( !empty($data) && !empty($data[$post_type]) && !empty($data[$post_type][$column]) ) {
331 $column_meta = $data[$post_type][$column];
332 }
333
334 return array_merge_recursive( $column_default_meta, $column_meta );
335
336 }
337
338 /*
339 * Get post_type columns meta
340 */
341 function adminify_prepare_post_type_column_meta( $post_type ) {
342
343 $columns_meta = get_option( '_adminify_admin_columns_meta_' . $post_type, null );
344
345 if ( ! is_null($columns_meta) ) return (array) $columns_meta;
346
347 $columns = adminify__get_post_type_all_columns( $post_type );
348
349 $_columns = [];
350
351 foreach ( $columns as $column => $column_label ) {
352 $_columns[] = [ 'name' => $column ] + (array) adminify_get_column_meta( $post_type, $column, $column_label );
353 }
354
355 return $_columns;
356
357 }
358
359 /*
360 * Get taxonomy columns meta
361 */
362 function adminify_prepare_taxonomy_column_meta( $taxonomy ) {
363
364 $columns_meta = get_option( '_adminify_admin_taxonomy_columns_meta_' . $taxonomy, null );
365
366 if ( ! is_null($columns_meta) ) return (array) $columns_meta;
367
368 $columns = adminify__get_taxonomy_all_columns( 'edit-' . $taxonomy );
369
370 $_columns = [];
371
372 foreach ( $columns as $column => $column_label ) {
373 $_columns[] = [ 'name' => $column ] + (array) adminify_get_column_meta( $taxonomy, $column, $column_label );
374 }
375
376 return $_columns;
377
378 }
379
380 /*
381 * Get post_type fields
382 */
383 function adminify_get_post_type_fields( $post_type ) {
384
385 $columns = array_map( 'sanitize_text_field', adminify__get_post_type_all_columns($post_type) );
386
387 return [
388 [
389 'id' => 'type',
390 'type' => 'select',
391 'title' => 'Column Type',
392 'chosen' => true,
393 'placeholder' => 'Select Column Type',
394 'options' => $columns,
395 ],
396 [
397 'id' => 'label',
398 'type' => 'text',
399 'title' => 'Label',
400 ],
401 [
402 'id' => 'width',
403 'type' => 'slider',
404 'title' => 'Width',
405 'unit' => '%'
406 ],
407
408 /*
409 * Register additional fields
410 */
411 // [
412 // 'id' => 'new',
413 // 'type' => 'text',
414 // 'title' => 'New'
415 // ]
416
417 ];
418
419 }
420
421 /*
422 * Get taxonomy fields
423 */
424 function adminify_get_taxonomy_fields( $taxonomy ) {
425
426 $columns = array_map( 'sanitize_text_field', adminify__get_taxonomy_all_columns( 'edit-' . $taxonomy ) );
427
428 return [
429 [
430 'id' => 'type',
431 'type' => 'select',
432 'title' => 'Column Type',
433 'chosen' => true,
434 'placeholder' => 'Select Column Type',
435 'options' => $columns,
436 ],
437 [
438 'id' => 'label',
439 'type' => 'text',
440 'title' => 'Label',
441 ],
442 [
443 'id' => 'width',
444 'type' => 'slider',
445 'title' => 'Width',
446 'unit' => '%'
447 ],
448
449 /*
450 * Register additional fields
451 */
452 // [
453 // 'id' => 'new',
454 // 'type' => 'text',
455 // 'title' => 'New'
456 // ]
457
458 ];
459
460 }